sidetech

(元)インフラエンジニアの寄り道メモ。

ADFS3.0のSSL証明書の更新

Office365導入して3年かぁ・・・早いもんだな・・・と思っている場合ではなく、SSL証明書の更新どうするんだっけ?!ってなるんですよ。
Microsoft Azuleを使っている方々はもしかしたらラクチンなのかもしれないのですが、オンプレミスでADFSを構築している環境の人間にとって、いや、ADFSだけじゃないですね・・・『SSL証明書』の更新は何時になっても鬼門ですよね[E:coldsweats01]

そんな鬼門になってしまうのは、構築時は気にしないで更新時に考えようってのが多いはず。
そして今回・・・ADFS3.0での更新の情報がネットでは少ないんですよ…。ADFS2.0はそこそこに記事があるんですけどね。

そんなこんなで情報は入り乱れているし、何が正解なのかもわからない[E:wobbly]
そもそも大規模を支えるシステムが、なんでこんなメンドクサイの[E:pout]

と、いう事で・・・切替方法についてです。

新しい証明書(*.pfx)までは作られている前提で。作り方は「IIS SSL証明書」とかでググってみてください。

基本的に全て管理者モードのPowerShellとmmc.exeで完結します。
新しいSSL証明書のpfxは、ADFS,ADFS Proxy全てのサーバで同じ場所に保存しておいてくださいね。

1.ADFSのプライマリから~。
PS C:\>get-pfxcertificate -filepath c:\[updatessl.doman].pfx -verbose| select-object -property Thumbprint

パスワードが聞かれるので.pfxのパスワードを入力。
するとThumbprintの値が出てくるので、他でも利用するので、メモ帳などにコピーしておきます。

2.PS C:\>$pwd = convertto-securestring -string "pfx password" -force -asplaintext
  pfxのパスワードを変数に格納しておきます。

3.PS C:\>import-pfxcertificate -FilePath c:\[updatessl.doman].pfx -CertStoreLocation cert:\localmachine\My -password $pwd -exportable
 これでインポートされてインポートされたディレクトリの表示とThumbprintの値が返ってきます。

4.mmc.exeを起動し、証明書スナップインを追加します。管理する証明書は「コンピュータアカウント」を選択します。
 コンピュータの選択ダウアログで、「ローカルコンピュータ」を選択し完了します。

5.MMCコンソール画面で「個人」の「証明書」フォルダを開いて、インポートされた証明書を右クリックし、「すべてのタスク」->「秘密キーの管理」をクリックします。

6.「グループ名またはユーザー名」の追加で、[nt service\dns;nt service\adfssrv]の二つを追加し、追加したユーザーは読み取りのみにアクセス許可を変更します。フルアクセスは外します。

7.PowerShellに戻り以下を入力。
  PS C:\>Set-AdfsCertificate -CertificateType Service-Communications -Thumbprint <メモ帳にとっといた値のthumbprint>
  PS C:\>Set-AdfsSslCertificate -Thumbprint <メモ帳にとっといた値のthumbprint>

8.ADFSサービスの再起動
  PS C:\>restart-service adfssrv

(もしADFSが2台ある場合はここまでをセカンダリADFSにも実施し、2台目のサービス再起動時に念の為、プライマリのADFSもサービス再起動しておいてくださいまし。)

9.設定が正しいか確認
  PS C:\>Get-AdfsCertificate
  PS C:\>Get-AdfsSslCertificate

10.Office365に対してフェデレーションアカウントで更新を掛けます。
  PS C:\>$cred = get-credential
   とすると資格情報の要求があるので、フェデレーション管理者のアカウントとパスワードを入力します。

11.PS C:\>connect-msolservice -credential:$cred
12.PS C:\>set-msoladfscontext -computer:$Env:COMPUTERNAME
13.PS C:\>update-msolfederateddomain -domainname:[ドメイン名] -supportmultipledomain

ここまできて問題なければ「Successfully updated "domein name" domain.」と表示されます。

14.ADFS Proxyの更新もしていきます。管理者モードのPowerShellを起動。
15.PS C:\>$pwd = convertto-securestring -string "pfx password" -force -asplaintext
16.PS C:\>import-pfxcertificate -FilePath c:\[updatessl.doman].pfx -CertStoreLocation cert:\localmachine\My -password $pwd -exportable
17.PS C:\>set-webapplicationproxysslcertificate -thumbprint <メモ帳にとっといた値のThumbprint値>
 構成が正常に完了しましたと出る。
18.PS C:\>restart-service appproxysvc restart-service adfssrv
   ADFSサービスのリスタートをappproxysvcとadfssrvに対して実行する。
19.PS C:\>Get-WebApplicationProxySslCertificate|fl
   正しくSSL証明書が更新されたかを確認し、Thumbprintの値が同一であればOK
(ADFS Proxyが複数台あれば、同様に14から行う)

一応こんな感じ・・・って・・・やってられっかよ!![E:annoy]
もっとツールとして提供するとか努力が必要じゃないですかね・・・MSさん。

クラウドサービスにも色々あるけど、この情報が有志のサイトの情報にしか頼れないってのは問題だよね。

てことで、参考にしたサイトは以下の通りでございます。
Replace certificates on ADFS 3.0[Microsoft Enterprise Mobility Suite Tips]
Office 365 - Replacing the SSL Certificate in AD FS 3.0

日本のOffice365利用者様ならびに管理者様・・・ご苦労様っす。

ちなみに本日の記事はステップは載せましたが、残念ながら当ブログのせいで障害が発生したと言われてもかなーり困りますので、ステージング環境なりでちゃんと試してくださいまし。[E:gawk]