皆様、こんにちは。Azure & Identity サポート担当の竹村です。
本ブログでは、Windows Server 2016 以降の AD FS における SSL サーバー証明書の更新手順をご案内します。
Windows Server 2012 R2 に関しては、こちらをご覧ください。
また、Powershell のコマンドが失敗する場合には、こちらの手順でも更新できますので、必要に応じて参照ください。
対象リリース: Windows Server 2016 以降
以下の流れで更新作業を行います。
手順の概要
- 証明書の取得
- SSL サーバー証明書、ルート証明書、中間証明書のインストール
- SSL サーバー証明書のアクセス権設定
- AD FS のサービス通信証明書へ SSL サーバー証明書を設定
- AD FS の SSL サーバー証明書を更新
- WAP サーバーを再構成
それぞれの詳細を紹介します。
1. 証明書の取得
ご利用になる認証機関から SSL サーバー証明書とルート証明書、中間証明書を取得します。
認証機関によって CSR 作成・送信、証明書受領手順が異なるため、手順は省略します。
2. SSL サーバー証明書、ルート証明書、中間証明書のインストール
ご利用になる認証機関から取得した SSL サーバー証明書、ルート証明書、中間証明書を以下手順でインストールします。
※ インポートする中間証明書の有無や数は、ご利用の認証機関によって異なります。
全 AD FS サーバー、全 WAP サーバーにて以下を実施します。
[スタート] - [ファイル名を指定して実行] から certlm.msc と入力し、[OK] をクリックします。
画面左側から以下のストアを展開します。
[証明書 (ローカル コンピューター)] - [信頼されたルート証明機関] - [証明書]
[証明書] を右クリックし、[すべてのタスク] - [インポート] を選択し、ウィザードに従って SSL サーバー証明書の発行元証明機関のルート証明書をインストールします。
続けて、画面左側から以下のストアを展開します。
[証明書 (ローカル コンピューター)] - [中間証明機関] - [証明書]
[証明書] を右クリックし、[すべてのタスク] - [インポート] を選択し、ウィザードに従って SSL サーバー証明書の発行元証明機関の中間証明書をインストールします。
続けて、画面左側から以下のストアを展開します。
[証明書 (ローカル コンピューター)] - [個人] - [証明書][証明書] を右クリックし、[すべてのタスク] - [インポート] を選択し、ウィザードに従って SSL サーバー証明書 (秘密鍵付き) をインストールします。
3. SSL サーバー証明書のアクセス権設定
証明書に、AD FS サービス アカウントに必要なアクセス許可を付与します。
全 AD FS サーバーにて以下を実施します。
[スタート] - [ファイル名を指定して実行] から certlm.msc と入力し、[OK] をクリックします。
画面左側から以下のストアを展開します。
[証明書 (ローカル コンピューター)] - [個人] - [証明書]
中央から、手順 2. でインストールした SSL サーバー証明書を右クリックして、[すべてのタスク] - [秘密キーの管理] をクリックします。
※ もし [秘密キーの管理] を実行できない場合は、次のコマンドを実行してください。 このコマンドを実行することにより、個人ストアのすべての証明書のキーの関連付けの修復、または証明書プロパティやキーのセキュリティ記述子の更新を行います。
certutil -repairstore my *
NT SERVICE\ADFSSRV (場所はローカルを指定します) を [追加] して、読み取りアクセス許可を付与します。
4. AD FS のサービス通信証明書へ SSL サーバー証明書を設定
AD FS のサービス通信証明書として、SSL サーバー証明書を設定します。
プライマリ AD FS サーバーにて以下を実施します。
スタート画面などから [AD FS の管理] コンソールを開きます。
画面左側から [AD FS] - [サービス] - [証明書] を右クリックし、 [サービス通信証明書の設定] をクリックします。
証明書の選択画面から手順 2. でインストールした SSL サーバー証明書を選択します。
[OK] をクリックします。
※ 警告が表示されましたら、[OK] をクリックします。
5. AD FS の SSL サーバー証明書を更新
AD FS の SSL サーバー証明書を更新します。AD FS プライマリサーバーにて以下を実施します。
バージョン 2016 以降では、プライマリサーバーでコマンドを実行しますと、自動的にセカンダリサーバーに接続し、ファーム内すべての AD FS サーバーの SSL 証明書を更新する動作となります。
また、バージョン 2016 以降では、証明書認証で従来の 49443 ポートを利用しているか、新しい機能である代替 TLS バインドモード (certauth を付与したホスト名の 443 ポート) を利用しているかによって、実行するコマンドが異なります。
どちらを利用しているかは、Powershell で以下のように実行して確認できます。
Get-AdfsProperties | findstr TlsClientPort |
49443 と表示される場合には、従来の 49443 ポートを利用する構成です。
443 と表示される場合には、代替 TLS バインドモードを利用している構成です。
以下の手順に従って、確認された構成のコマンドを選択して更新を行います。
ドメイン管理者 (Domain Admins) でプライマリサーバーにログインし、PowerShell を管理者として起動します。
起動した PowerShell で、お客さまの環境構成に応じたコマンドを実行して SSL サーバー証明書を更新します。
従来の 49443 ポートを利用する場合Set-AdfsSslCertificate -Thumbprint [新しい証明書の拇印]
代替 TLS バインドモード (certauth を付与したホスト名の 443 ポート) を利用する場合
Set-AdfsAlternateTlsClientBinding -Thumbprint [新しい証明書の拇印]
※ 証明書の拇印 (Thumbprint) は、以下のコマンドでご確認頂けます。
dir Cert:\LocalMachine\My\ | FL Thumbprint, Subject, NotBefore, NotAfter
コンピューターの個人ストアにインポートされている証明書が表示されますので、新しい SSL 証明書の Thumbprint に表示されている文字列をコピーしてご利用ください。
なお、証明書認証で利用するポートを変更したい場合には、変更先のコマンドを実行します。
例えば、49443 ポートから 443 ポートに変更したい場合には Set-AdfsAlternateTlsClientBinding を実行し、443 ポートから 49443 ポートに変更するには Set-AdfsSslCertificate を実行します。
コマンドでエラーが発生する場合には、以下をご確認ください。
(お急ぎの場合には、こちらの手順で更新を行ってください。)
(a) AD FS ファーム内のサーバーが正しいかどうかをご確認ください。
AD FS プライマリサーバーで、Get-AdfsFarmInformation コマンドレットを実行することで、ファームの FBL (FarmBehaviorLevel) とファームに所属するノードが表示されます。
(実行例)
Get-AdfsFarmInformation |
CurrentFarmBehavior が 3 以上であり、FarmNodes にファーム内に存在する正しいノードが出力されることをご確認ください。
(b) WinHTTP Proxy のバイパス設定が正しく設定されているかどうかをご確認ください。
AD FS サーバーで、WinHTTP Proxy を利用している場合、AD FS の各ノード、およびフェデレーションサービス名が適切にバイパスされていることをご確認ください。
WinHTTP の Proxy は、以下のコマンドで確認可能です。
netsh winhttp show proxy |
※ (a) の Get-AdfsFarmInformation コマンドで表示されるノード、およびフェデレーションサービス名がバイパスされていることをご確認ください。
(c) WinRM が各ノードで利用できることをご確認ください。
該当のコマンドは、各ノードに WinRM で接続します。
以下の観点で、それぞれのサーバーでご確認ください。
c-1). リモート管理
[サーバーマネージャー] - [ローカルサーバー] と遷移し、[リモート管理] が “有効” となっていることをご確認ください。
c-2). Windows Remote Management
[サーバーマネージャー] - [ツール] から [サービス] を起動し、Windows Remote Managementサービスが開始していることをご確認ください。
c-3). 5985 番ポートの開放
リモートアクセスの際に、ポート番号 5985 番を使用した通信が発生いたします。
ファイアウォールなどで該当のポートがブロックされていないかどうか、ご確認ください。
(d) ドメインの管理者アカウントでログインし、コマンドを実行しているかどうかをご確認ください。
WinRM への接続時に Kerberos 認証を行いますので、ドメインユーザーである必要があります。
また、AD FS サーバーローカルの管理者権限も必要です。
Domain Admins グループに所属しているアカウントであればこれらの要件を満たします。
コマンドの実行に成功いたしましたら、次の WAP の再構成に進みます。
6. WAP サーバーを再構成
WAP サーバーを再構成します。全 WAP サーバーにて以下を実施します。
レジストリ エディターを開きます。
[HKEY_LOCAL_MACHINE\Software\Microsoft\ADFS] を選択します。
[ProxyConfigurationStatus] をダブル クリックします。
[値のデータ] を 1 にして [OK] をクリックします。
スタート画面などから [リモート アクセス管理] コンソールを開きます。
画面左側から [構成] - [Web Application Proxy] をクリックします。
画面中央から [Web アプリケーション プロキシ構成ウィザードの実行] をクリックします。
初期構成時と同様に、WAP サーバーを構成します。
※ [AD FS プロキシの証明書] 画面では、手順 2. でインストールした SSL サーバー証明書を選択します。
(注意) WAP サーバーの再構成を行う際には、hosts ファイルでフェデレーションサービス名がプライマリ AD FS サーバーに名前解決されるように設定ください。
AD FS サーバーと WAP サーバーとの間にロードバランサーが存在する環境の場合、明示的にプライマリ AD FS サーバーに対して接続されるように設定しないと、再構成に失敗することがございます。
手順は以上の通りとなります。上記手順は過去にも同様のお問い合わせをお受けした際、多くのお客様にご案内しております実績のある手順ですが、一度検証環境で一連の動作を確認されることをお勧めいたします。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。