AD FS の自動証明書ロールオーバー機能について

こんにちは、プラットフォーム サポート チームの加藤です。
AD FS の自動証明書ロールオーバー機能についてご案内します。

 

(a) ご案内の目的
(b) 対象の AD FS
(c) 自動証明書ロールオーバー機能とは
(d) 想定されるリスク
(e) 対処策
(f) 補足

 

(a) ご案内の目的

AD FS の自動証明書ロールオーバー機能が動作することで、連携をしていただいているサービス (RP・IdP) によりましては運用に影響を及ぼす可能性がございます。
そのため、多くのお客様に正しく AD FS の自動証明書ロールオーバー機能をご理解いただけますよう、その一助となればと思いまして本ご案内にて情報の提供を行わせていただくことになりました。

 

(b) 対象の AD FS

本ご案内の対象となる AD FS は以下になります。

 

  • Windows Server 2008 R2 の AD FS 2.0
  • Windows Server 2012 の AD FS 2.1
  • Windows Server 2012 R2 の AD FS 3.0

 

(c) 自動証明書ロールオーバー機能とは

自動証明書ロールオーバー機能は、AD FS で保持している以下 2 つの証明書を自動で更新する機能です。
※ 以降「証明書」と記載する場合はこの 2 つの証明書を指します。

 

  • トークン署名証明書
  • トークン暗号化解除証明書

 

トークン署名証明書はトークンを署名するために使用する証明書です。
トークン暗号化解除証明書はトークンの暗号化・復号に使用する証明書です。

 

様々な RP・IdP と連携をしている AD FS におきまして、この証明書により署名・暗号化されたトークンが受け渡しされます。
そのため、これらの証明書は AD FS だけでなく、連携をしている RP・IdP 側でも同一の証明書を保持する必要がございます。
RP・IdP 側でも、署名の検証、暗号化の復号などを同証明書で行うためです。

 

AD FS で保持しているこの証明書は既定で 1 年の有効期限を持ちます。
有効期限が切れますとその証明書は使用できなくなりますので、その前に更新を行う必要がございます。
この更新を AD FS 上で保持している証明書に対して自動で行う機能が自動証明書ロールオーバー機能になります。

 

自動証明書ロールオーバー機能は、既定では以下の動作をします。

 

  1. 現在使用されているプライマリの証明書の有効期限が切れる 20 日前に、新証明書をセカンダリとして作成する
  2. セカンダリの新証明書が作成されてから 5 日後に、プライマリ (旧証明書) とセカンダリ (新証明書) を入れ替える

 

AD FS では常にプライマリの証明書を使用するため、これ以降、新しく作成された新証明書が署名・暗号化に使用されるようになります。

 

(d) 想定されるリスク

RP・IdP によりましては、AD FS の自動証明書ロールオーバー機能が動作した場合、RP・IdP 側で保持している同証明書の更新を手動で行わないと、以降その AD FS を経由した認証が正常に通らなくなる恐れがございます。

 

これは、RP・IdP 側でも同証明書を保持していることと、AD FS の自動証明書ロールオーバー機能は AD FS で保持している証明書に対して働く機能であるためです。
RP・IdP によりましては、定期的に連携先のフェデレーション メタデータを監視し、その変更を逐次自身に反映をさせる機能を持っています。
そのような機能を持っている RP・IdP であれば、連携先が AD FS であった場合、AD FS のフェデレーション メタデータを読み込んで新証明書を自動で自身に反映をさせるため、手動での更新などが不要になることがございます。

 

なお、AD FS におきましてはその機能を持っています。
つまり、RP・IdP 側になった AD FS は、更にその連携先の RP・IdP 側のフェデレーション メタデータを監視し、仮に連携先で証明書の更新が行われた際も新証明書を自身に反映させることが可能です。

 

(e) 対処策

RP・IdP 側で、AD FS のフェデレーション メタデータを監視する仕組みを持ち合わせていない場合、AD FS に作成された新証明書を RP・IdP に対して手動で更新していただくことが対処策となります。
RP・IdP 側のみで使用される証明書が新証明書になりましても、認証は正常に通りません。
そのため、AD FS 側で新証明書がプライマリになったことをご確認いただきまして、それに合わせて RP・IdP 側にもその新証明書更新していただきます。
証明書の更新手順は、RP・IdP の製品に応じて異なりますため、事前に確認をしておくとスムーズに更新作業を行えると思います。

 

なお、これらの更新タイミングをお客様のタイミングで行われたい場合は、AD FS の自動証明書ロールオーバー機能を無効にしていただきます。
その上で、新証明書の作成を含めて手動で行っていただくことで、お客様のご都合に合わせて AD FS と連携先の RP・IdP 側を含めた証明書の更新作業を行っていただくことが可能です。

 

AD FS の自動証明書ロールオーバー機能を無効にする場合は、AD FS サーバー上の PowerShell で以下のコマンドを実行していただきます。

 

Set-ADFSProperties -AutoCertificateRollover $false

 

有効に戻していただく場合は、以下のコマンドを実行していただきます。

 

Set-ADFSProperties -AutoCertificateRollover $true

 

(f) 補足

以下について補足をさせていただきます。

 

用語

IdP
Identity Provider です。
フェデレーション連携において、認証を行う側です。
例えば、Office 365 と AD FS で連携をしている環境において、AD FS 側が IdP になります。

 

RP
Relying Party です。
フェデレーション連携において、サービスの提供を行う側です。
例えば、Office 365 と AD FS で連携をしている環境において、Office 365 側が RP になります。

 

証明書の有効期限延長

既定では、トークン署名/トークン暗号化解除証明書は有効期間 1 年として作成されます。
以下の手順に沿って、トークン署名/トークン暗号化解除証明書の有効期間を変更することで、次回以降作成される証明書に反映されます。

 

なお、この手順は現行の証明書の期間を延ばすものではなく、この設定以降に作成される証明書の有効期間を変更するものとなります。
そのため、トークン署名/トークン暗号化解除証明書の有効期間を延ばす際には、まずはこの手順を実施していただいた後に証明書の更新作業を行っていただきます。

 

  1. プライマリ AD FS サーバー で PowerShell を管理者として起動します。
  2. 起動した PowerShell で以下のコマンドを実行して有効期間を設定します。

 

Set-AdfsProperties -CertificateDuration <有効期間 (日)>

 

10 年に設定する場合は以下のようになります。

 

Set-AdfsProperties -CertificateDuration 3650

 

弊社内部情報より、最長で 50 年の設定を行っても問題ないことを確認しております。

 

 

以上となります。
今後とも弊社サポート サービスのご愛顧を何卒よろしくお願い致します。