ADFS、WAP(ADFSプロキシ)のSSLサーバー証明書更新手順

実際に私自身が行った ADFS、WAPサーバのSSLサーバー証明書更新をご紹介いたします。
ほんの一例ですのでご紹介する方法以外でも更新は可能であることご留意ください。
また、ADFSサーバで利用している「トークン署名証明書」や「トークン暗号化証明書」は全く別物ですのでお気を付けください。
目次
環境
・ADFS(2台)
Windows Server 2012 R2(ADFSバージョン3.0)
・WAP(2台)
Windows Server 2012 R2
事前準備(証明書の取得)
ご利用になる認証機関から SSLサーバー証明書、ルート証明書、中間証明書と必要な証明書を取得してください。
それぞれ認証機関が異なるためここでの説明は割愛させていただきます。
私の場合は、ルート証明書の更新は必要なく、SSLサーバー証明書と中間証明書の更新が必要でした。また、証明書取得前に作成した秘密鍵の準備もお願いします。
ポイント!
秘密鍵のパスフレーズは解除不要(パスワード設定が必要)
事前準備(証明書インストール用のpfxファイル作成)
事前に準備したSSLサーバー証明書、中間証明書、秘密鍵を1つのpfxファイルとして結合します。
ルート証明書が必要な場合は、それも含めてください。
私の場合、Windows10パソコンで opensslコマンドを実行し、結合しましたのでご紹介します。
※opensslコマンドは事前にWindowsパソコンへインストールしてください
ポイント!
SSLサーバー証明書、中間証明書、秘密鍵を1つのpfxファイルとして結合してインポートします
コマンド:
openssl pkcs12 -export -in SSLサーバー証明書 -inkey 秘密鍵 -certfile 中間証明書 -out pfxファイル名(任意)
コマンド例:
openssl pkcs12 -export -in adfs.example.com.cer -inkey adfs.key -certfile nii-odca3sha2ct.cer -out adfs.pfx
実行結果:
パスワードが求められますので任意の文字列を入力します。
このパスワードはpfxファイルをインストールする時に使用します。

SSLサーバー証明書、(ルート証明書)、中間証明書のインストール
作成したpfxファイルを利用して証明書、中間証明書をインストールします。
ポイント!
すべてのADFS、WAPサーバでインストールを行います
今回はルート証明書のインストールは不要ですので自身の環境と読み替えてください
作成したpfxファイルを右クリックし、「PFXのインストール」を選択します。

「ローカルコンピューター」を選択し、次へをクリックします。

「参照」から作成したpfxファイルを選択し、次へをクリックします。

pfxファイル作成時に入力したパスワードを入力し、「このキーをエクスポート可能・・・」、「すべての拡張プロパティ・・・」の2か所にチェックを入れて、次へをクリックします。

「証明書の種類に基づいて、自動的に証明書ストアを選択する」にチェックを入れ、次へをクリックします。

完了をクリックすると、「正しくインポートされました。」が表示されるのでインストールは完了です。

証明書ストア(個人)へSSLサーバ証明書、証明書ストア(中間証明機関)へ中間証明書がインポートされたことを確認します。
証明書ストア(個人)

証明書ストア(中間証明機関)

SSLサーバー証明書のアクセス権設定
証明書にADFSサービスアカウントに必要なアクセス許可を設定します。
ポイント!
全ADFS、全WAPサーバでアクセス権設定を行います
環境によってWAPサーバは、ADFSSRVしか存在しない場合があります(私の場合、このパターンでした)
「スタート」 – 「ファイル名を指定して実行」 へ certlm.msc と入力し、「OK」をクリックします。
左ペインから「証明書(ローカルコンピューター)」 – 「個人」 – 「証明書」を展開します。

中央ペインからインストールしたSSLサーバー証明書を選択し、右クリックして「すべてのタスク」 – 「秘密キーの管理」をクリックします。
Windowsサーバのローカルユーザーである「NT SERVICE\ADFSSRV」と「NT SERVICE\DRS」を追加して「読み取り」のアクセス権を付与します。
※「NT SERVICE\DRS」が存在しない場合は、「NT SERVICE\ADFSSRV」のみでも問題ありません
「NT SERVICE\ADFSSRV」

「NT SERVICE\DRS」

ADFSのサービス通信証明書へSSLサーバー証明書を設定
ポイント!
プライマリADFSサーバのみで行います
設定変更前に事前確認を行います。
PowerShellコマンドで以下コマンドを実行します。
netsh http show ssl
※結果は一部のみ抜粋して表示しています

ホスト名のポートが「443」、「49443」の行と証明書ハッシュ行を確認しておきます。
プライマリADFSサーバのスタート画面などから 「ADFSの管理」 コンソールを開きます。
左ペインから「ADFS」 – 「サービス」 – 「証明書」と展開し、「証明書」を右クリック、「サービス通信証明書の設定」をクリックします。
「サービス通信証明書の選択」ウィンドウから先ほどインストールした
SSLサーバー証明書を選択し、「OK」をクリックします。
※警告が表示された場合は、「OK」をクリックします。

設定内容が反映されていることを確認します。
PowerShellコマンドで以下コマンドを実行します。
netsh http show ssl
新しい証明書ハッシュに変更されていることを確認します
※結果は一部のみ抜粋して表示しています

ホスト名のポートが「443」、「49443」の行を確認し、証明書ハッシュ行が新しいものに変更されていることを確認します。
ADFSのSSLサーバ証明書更新
ポイント!
全ADFSサーバで行います
「スタート」 – 「ファイル名を指定して実行」 へ certlm.msc と入力し、「OK」をクリックします。
左ペインから「証明書(ローカルコンピューター)」 – 「個人」 – 「証明書」を展開します。
中央ペインからインストールしたSSLサーバー証明書をダブルクリックします。
「詳細」タブをクリックします。
「拇印」の値をメモします。
PowerShellを管理者として起動します。
起動したPowerShellで以下のコマンドを実行してSSLサーバー証明書を更新します。
Set-AdfsSslCertificate -Thumbprint 175*****************************6b18
※拇印のスペースは除いてください(aa 22 cc 33 ⇒ aa22cc33)
Get-AdfsSslCertificateコマンドで反映を確認します。

WAPサーバの再構成
ポイント!
全WAPサーバで行います
レジストリエディターを開いて
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS」を選択します
「ProxyConfigurationStatus」をダブルクリックします。
「値のデータ」を「1」にして「OK」をクリックします。

WAPサーバにログオンして、「スタート」 – 「管理ツール」 – 「リモートアクセス管理」 を起動します。
左ペインの「構成」 – 「Web Application Proxy」をクリックします。
中央ペインから「Webアプリケーションプロキシ構成ウィザードの実行」をクリックします。

初期構成時と同じ値を選択し、WAPサーバを構成します。
※初期構成時の内容は読み替えてください

フェデレーションサービス名、ユーザー名、パスワードを入力します。

新しい証明書を選択し、証明書のパスに問題ないことを確認します。

「構成」をクリックします。

「Webアプリケーションプロキシが正常に構成されました。」を確認します。

「操作の状況」で「正常に動作しています」が表示されていれば成功です。

まとめ
少し長くなりましたがいかがだったでしょうか。
同じ環境で実際の業務に利用されている方は少ないかもしれませんが、お役に立てれば幸いです。