Windows Server 2012 R2のADCSをSHA1⇒SHA2へ移行する分かりやすい手順が公開されていますので、まだ移行が完了していない方向けに共有します。
本当は自宅の検証環境で実行した結果を画面キャプチャつきでアップしたいのですが、時間がないのでとりあえずリンクを共有です。
Migrating a Certification Authority Key from a Cryptographic Service Provider (CSP) to a Key Storage Provider (KSP)
適用対象:Windows Server 2012 R2、Windows Server 2012
簡単に手順を掲載します。
※確認コマンドなどは長くなるので省略していますので、参照元を見てください
①CAをバックアップします。
コマンド or GUI
※GUIの場合は、増分バックアップを実行するオプションを選択しないでください。
②レジストリのバックアップ
reg export HKLM\SYSTEM\CurrentControlSet\services\CertSvc c:\<Your Backup Directory>\CAregistry.reg
③CAのサービス停止(コマンド、GUI)
コマンドは以下です
Stop-service certsvc
④コマンドプロンプトウィンドウで、ファイルに出力する次のコマンドを使用してCA証明書の詳細を取得します。これにより、後で必要になるCert HashとKey Containerの値を簡単にメモできます。
> certutil –store my <Your CA common name> >output.txt
⑤既存のCA証明書と秘密キーを削除します。
Powershellで
> cd cert:\localmachine\my
Certutilコマンドを実行したときに証明書IDとして証明書ハッシュとして以前に特定した最初の値を使用して、次のコマンドを実行し、証明書と秘密キーを削除します。
> del –deletekey <"Certificate ID">
※ハッシュを指定して削除できました。これにより秘密キーと証明書が削除されます
⑥CA証明書と秘密キーをKSPに移行します。
> certutil –csp <KSP name> -importpfx <Your CA cert/key file>.p12
⑦次のコマンドを実行して、結果のCA証明書と秘密キーを.PFXファイルにエクスポートします。
> certutil –exportpfx my <CA Common Name> <PFX file path for export>.pfx
⑧CAで次のコマンドを実行して、エクスポートされた.PFXファイルを復元します。
> certutil –restorekey <PFX file path>.pfx
⑨CSPのレジストリ設定をインポートします。
次の値を持つCsp.regという名前のレジストリファイルを作成してインポート。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Your CA Common Name>\CSP]
"ProviderType"=dword:00000000
"Provider"="Microsoft Software Key Storage Provider"
"CNGPublicKeyAlgorithm"="RSA"
"CNGHashAlgorithm"="SHA1"
⑩CSP暗号化設定のレジストリ設定をインポートします。
次の値を持つEncryptionCsp.regという名前のレジストリファイルを作成します。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Your CA Common Name>\EncryptionCSP]
"ProviderType"=dword:00000000
"Provider"="Microsoft Software Key Storage Provider"
"CNGPublicKeyAlgorithm"="RSA"
"CNGEncryptionAlgorithm"="3DES"
"MachineKeyset"=dword:00000001
"SymmetricKeySize"=dword:000000a8
⑪CAハッシュアルゴリズムをSHA-2に変更します。※オプション
> certutil -setreg ca\csp\CNGHashAlgorithm SHA2
⑫サービス起動(GUI or コマンド)
コマンドは以下
> start-service certsvc
⑬確認で以下は実行したほうがいいですね。
> certutil –store my <Your CA Common Name>
SHA2移行はレジストリも大事な設定の一部なので設定漏れがあるとうまくいきません。その他、失効リストなどの手順もありますが、長くなるので、引用元を確認ください。一応、この手順と証明書書き換えでルート証明書までSHA2になることを確認できました。