Windows Server 2012 R2で構築したADCSをエンタープライズCAとしてインストールし、証明書テンプレートを作成したのですが、設定した内容が反映されていない現象が発生しました。
具体的には、秘密キーをエクスポート可能にしてテンプレートを作成しているのですが、秘密キーが含まれない形で証明書が作成されます。
他にも、作成したテンプレートが証明書要求で表示されないこともありました。
ちなみに、関連すると思われる内容で、こんな情報が公開されています。
Windows Server 2008 以降の証明書 WEB 登録ではローカルコンピュータへのインストール処理は実行できません
https://support.microsoft.com/ja-jp/help/2688969
Windows Server 2008 以降の Active Directory 証明書サービスにおいて、証明書 Web 登録から [ローカル コンピュータの証明書ストアに証明書を格納する] のオプションは廃止されました。そのため、ユーザーは証明書 Web 登録を使用して、証明書をローカルコンピュータにインストールする処理を行うことができません。
また、秘密鍵がエクスポート可能な証明書テンプレートを作成する手順はWindows Server 2008 R2の場合ですが、紹介されています。
1. Active Directory 証明書サービスがインストールされたサーバーに Enterprise Admins 権限を持つユーザーでログオンします。
2. [スタート] - [管理ツール] - [証明機関] を開きます。
3. 画面左の [CA 名] - [証明書テンプレート] を右クリックし、[管理] をクリックします。
4. 画面中央に表示される証明書テンプレートの中から、インストールしたい証明書の証明書テンプレートを右クリックし、[テンプレートの複製] をクリックします。
5. [テンプレートの複製] の項目にて、[Windows Server 2003 Enterprise] を選択し、[OK] をクリックします。
6. [全般] タブにて、[テンプレートの表示名] と [テンプレート名] を設定します。
7. [要求処理] タブにて、[秘密キーのエクスポートを許可する] のチェックをオンにします。
8. [サブジェクト名] タブにて、[要求に含まれる] を選択します。(警告が表示されますが、[OK] をクリックします。)
9. [セキュリティ] にて、証明書取得を行うユーザーに以下のアクセス許可を設定します。
* 読み取り
* 登録
10. [適用]、[OK] の順番にクリックをしてダイアログを閉じます。
11. [証明機関] 管理ツールの [証明書テンプレート] を右クリックし、[新規作成] - [発行する証明書テンプレート] をクリックします。
12. 先に作成した証明書テンプレートを選択し、[OK] をクリックします。
13. 右ペインに、選択した証明書テンプレートが表示されていることを確認します。
手順を再確認しても、やはり方法的には全然問題ないのですが、なぜか秘密キーが含まれな形で証明書が作成されてしまいます。
バグがと思いましたが、上記情報からレプリケーションに問題があるということが書いてありました。
証明書テンプレートを変更しましたが、変更前のテンプレートがまだ一部の証明機関 (CA) に残っています。
原因 : CA 間の証明書テンプレートのレプリケーションは、Active Directory のレプリケーション処理によって行われます。このレプリケーションは即時に完了するものではないため、新しいテンプレートがすべての CA で使用できるようになるまでにわずかな遅延が発生することがあります。解決方法 : 変更したテンプレートがすべての CA にレプリケートされるまで待ちます。CA で使用できる証明書テンプレートを表示するには、Certutil.exe コマンド ライン ツールを使用します。
ちなみに、証明書テンプレートはADが保管しています。今回は、ADCSはAD上に構築し、シングル構成でしたが、レプリケーションに遅延が発生していたようです。
しばらく放置していたら、問題なく秘密キーが含まれる証明書を発行することができました。
秘密キーをエクスポートできるように設定した証明書で、秘密キーが含まれない証明書が作成された場合は、参考にしてみてください。