ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

Windows Server 2012 R2のADCSをSHA1⇒SHA2へ移行する分かりやすい手順

Windows Server 2012 R2のADCSをSHA1⇒SHA2へ移行する分かりやすい手順が公開されていますので、まだ移行が完了していない方向けに共有します。


本当は自宅の検証環境で実行した結果を画面キャプチャつきでアップしたいのですが、時間がないのでとりあえずリンクを共有です。


Migrating a Certification Authority Key from a Cryptographic Service Provider (CSP) to a Key Storage Provider (KSP)

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn771627(v=ws.11)?redirectedfrom=MSDN

 


適用対象: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になることを確認できました。