【AD CS】2段構成の証明機関の構成 (スタンドアロン CA / エンタープライズ CA)

実運用においてドメイン環境でプライベートな証明機関を構築する場合、利便性からエンタープライズ CA を利用して構築されているケースが多いです。
しかし、エンタープライズ CA でルート証明機関を構築すると、常時、社内ネットワークと接続した状態で運用する必要があり、ルート証明機関の秘密キーが漏洩してしまうリスクが高くなってしまいます。
そのため、ルート証明機関の秘密キーの漏洩を防ぐために、ルート証明機関はスタンドアロン CA で構築してオフラインで運用し、証明書を発行する下位証明機関はエンタープライズ CA で構築してオンラインで運用するという多段構成にして実運用されているケースも多いです。
プライベート CA の構成として、ルート証明機関、下位証明機関の 2 段構成としている場合が多いです。

今回は以下の構成を構築してみましょう。

ドメイン コントローラー 1 台
ワークグループのサーバー (サーバー OS) 1 台 (ルート CA 用)
ドメイン メンバー (サーバー OS) 1 台 (下位 CA 用)
ドメイン メンバー (クライアント OS) 1 台

 

環境

上記の通り、ワークグループのサーバー OS にスタンドアロン CA でルート証明機関を構築し、ドメイン メンバーのサーバー OS にエンタープライズ CA で下位証明機関を構築します。

ルート証明機関の構築

ワークグループでルート証明機関を構築する方法は、以下の記事の “スタンドアロン CA の構築” の項目で詳細な手順を説明しています。
以下の項目を参考に、ワークグループのサーバー OS 上にルート証明機関を構築してください。

【AD CS】スタンドアロンでルート証明機関の構築手順

 

 

下位証明機関の構築

エンタープライズの下位 CA を構築します。

Active Directory 証明書サービスのインストール

1) メンバー サーバーに Enterprise Admins もしくはルート ドメインの Domain Admins の権限をもつユーザーでログオンします。

 

2) [サーバー マネージャー] を開き、[管理] より [役割と機能の追加] をクリックします。

 

3) [開始する前に] にて、[次へ] をクリックします。

 

4) [インストールの種類の選択] にて、[役割ベースまたは機能ベースのインストール] を選択して [次へ] をクリックします。

 

5) [対象サーバーの選択] にて、[次へ] をクリックします。

 

6) [サーバーの役割の選択] にて、[Active Directory 証明書サービス] のチェックボックスを有効にします。

 

7) [役割と機能の追加ウィザード] にて、[管理ツールを含める(存在する場合)] のチェックボックスが有効になっていることを確認し、[機能の追加] をクリックします。

 

8) [サーバーの役割の選択] にて、[Active Directory 証明書サービス] のチェックボックスが有効になっていることを確認したら、[次へ] をクリックします。

 

9) [機能の選択] にて、そのまま [次へ] をクリックします。

 

10) [Active Directory 証明書サービス] にて、[次へ] をクリックします。

 

11) [役割サービスの選択] にて、[証明機関] のチェックボックスが有効になっていることを確認し、[次へ] をクリックします。

 

12) [インストール オプションの確認] にて、[インストール] をクリックします。

 

13) Active Directory 証明書サービスのインストールが正常に完了したら、[対象サーバーに Active Directory 証明書サービスを構成する] をクリックします。

 

証明機関(CA)の構成

1) [資格情報] の枠に Enterprise Admins もしくはルート ドメインの Domain Admins の権限を保持するユーザーの資格情報が入力されていることを確認し、[次へ] をクリックします。
※自動でログオンユーザーが補完されます。もし、ログオン ユーザーは Enterprise Admins もしくはルート ドメインの Domain Admins の権限をしていない場合は、[変更] をクリックして対象の権限を保持している資格情報(ユーザー名とパスワード)を入力します。

 

2) [役割サービス] にて、[証明機関] のチェックボックスを有効にして [次へ] をクリックします。

 

3) [セットアップの種類] にて、[エンタープライズ CA] のチェックボックスを有効にして [次へ] をクリックします。

 

4) [CA の種類] にて、[下位 CA] を選択して [次へ] をクリックします。

 

5) [秘密キー] にて、[新しい秘密キーを作成する] を選択して [次へ] をクリックします。

 

6) [CA の暗号化] にて、各種設定を行い [次へ] をクリックします。各種設定の詳細は以下の通りです。

[暗号化プロバイダー] : データの暗号化やハッシュ値を算出するサービスの種類です。
特にこだわりがなければ、既定の “RSA#Microsoft Software Key Strong Provider” のままで問題ありません。
(主要アルゴリズムは全てサポートしているプロバイダーです)

[キー長]:公開鍵のキー長です。

[この CA から発行された署名に使用するハッシュ アルゴリズムを選択] にて、この CA サーバーで発行する証明書の署名に使用するハッシュ アルゴリズムを選択します。
セキュリティの観点から SHA256 以上を選択することを推奨します。MD5 は SHA1 などの古いハッシュアルゴリズムは脆弱性が存在するので推奨しません。

 

7) [CA の名前] にて、[この CA の共通名] に CA の名前を設定します。
ドメイン名とコンピューター名を組み合わせた名前が自動補完されますが、任意の名前に変更して問題ありません。
ただし、識別名のサフィックスと識別名のプレビューは基本的には変更しないでください。

 

8) [証明書の要求] にて、[証明書の要求をターゲット コンピューター上のファイルに保存する] の項目を選択します。ここで自動補完されている [ファイル名] の部分をメモ帳などにメモしておいてください。
このファイル名が構築中の下位証明機関の CA 証明書となります。

 

9) [CA データベース] にて、証明書データベースや証明書データベースのファイルの保存場所を指定して [次へ] をクリックします。
自動補完される保存場所のパスのままで問題ありません。

 

10) 確認] にて、AD CS の構成ウィザードで設定した内容に問題がないか確認し、問題がなければ [構成] をクリックします。

 

11) Active Directory 証明書サービスが正常に構成されるのを待ちます。
[結果] にて、”構成に成功しましたが警告があります” と表示されているのを確認したら、[閉じる] をクリックします。
ここでは警告メッセージが表示されますが、これは CA 証明書の発行が完了していないためで、”構成に成功しました” というメッセージが表示されていたら問題ないです。

 

下位 CA 証明書の発行

1) [証明書の要求] にて、表示されていた [ファイル名] の部分に自動補完されていたファイル(これは下位証明機関の CA 証明書の CSR です)をコピーします。

 

2) ルート証明機関に管理者権限をもつユーザーでログオンします。

3) ルート証明機関の任意のフォルダに下位証明機関の CA 証明書の CSR のファイル(CA01.test01.local_test01-CA02-CA.req) を保存します。

4) スタートボタンより、[Windows 管理ツール] – [証明機関] を開き、管理ツールの左ペインにて、[証明機関(ローカル)] – [<CA 名>] を右クリックして [プロパティ] をクリックします。

 

5) [要求ファイルを開く] より、下位証明機関の CA 証明書の CSR を選択して [開く] をクリックします。

 

6) 証明機関の管理ツールに戻り、[証明機関(ローカル)] – [<CA 名>] – [保留中の要求] を選択して、提出した CSR を選択して [発行] を選択します。

 

7) [発行した証明書] を選択して、発行された証明書をダブルクリックして証明書を開きます。

 

8) 開いた証明書にて [詳細] タブを選択して、[ファイルにコピー] をクリックします。

 

9) [証明書のエクスポート ウィザードの開始] にて、[次へ] をクリックします。

 

10) [エクスポート ファイルの形式] にて、”DER encoded binary X. 509 (.CER)” を選択して [次へ] を選択します。

 

11) [エクスポートするファイル] にて、[ファイル名] の項目にて [参照] を選択して発行した証明書のエクスポート ファイルの保存先とファイル名を指定して [次へ] をクリックします。

 

12) [証明書のエクスポート ウィザードの完了] にて、[完了] をクリックします。

 

13) [証明書のエクスポート ウィザード] にて、”正しくエクスポートされました。” と表示されたことを確認したら [OK] をクリックします。

14) エクスポートした下位 CA 証明書のエクスポート ファイルをコピーします。

 

下位 CA 証明書をインストールする時によくあるトラブル事例について以下の記事で紹介しています。

 

下位証明機関の CA 証明書のインストール時のエラー (0x800b010a)

 

【解決方法】AD CS の起動時にエラー (0x80092013: CRYPT_E_REVOCATION_OFFLINE)となり起動できない

 

 

下位 CA 証明書の登録

1) 下位証明機関に再度管理者権限をもつユーザーでログオンします。

2) ルート証明機関で発行した CA 証明書のエクスポート ファイルを任意のフォルダに保存します。

 

3) スタートボタンより、[Windows 管理ツール] – [証明機関] を開き、管理ツールの左ペインにて、[証明機関(ローカル)] – [<CA 名>] を右クリックして [すべてのタスク] – [CA 証明書のインストール] をクリックします。

 

4) [CA のインストールを完了するためにファイルを選択します] にて、下位 CA 証明書のエクスポート ファイルを選択して [開く] を選択します。

 

5) CA 証明書のインストールが完了したら、[証明機関] の起動してきます。
グリーンのチェックマークがついていれば、正常に稼働しています。

※注:”Active Directory 証明書サービス” を起動するとき、CA 証明書の信頼チェーンの検証や失効確認を行います。
CA 証明書のインストールした際や、インストール完了後の Active Directory 証明書サービスが起動したときに、CA 証明書の信頼チェーンの検証や失効確認に失敗したときに以下のエラーが発生することがあります。

 

証明書の発行

ドメインに参加しているクライアントでユーザー証明書を発行します。
発行する証明書が信頼チェーンを構成できるように、ルート証明書を手動でインストールします。下位証明機関はエンタープライズ CA で構築しているので、ドメインに参加しているクライアントは自動で下位 CA 証明書は配布されています。

 

ルート証明書のインストール

1) クライアント端末上の任意のフォルダに、コピーしたエクスポート ファイルと発行した証明書のエクスポート ファイルを保存します。

2) コマンド プロンプトを開き、cd コマンドでエクスポート ファイルを保存したフォルダに移動します。

3) 以下のコマンドで CA 証明書をインストールします。

certutil -user -addstore Root <CA 証明書のエクスポート ファイル>

 

4) ルート証明書をインストールしても問題ないか確認するポップアップが表示されたら [はい] をクリックします。

 

5) certutil コマンドの実行結果で、”-addstore コマンドは正常に完了しました。” というメッセージが表示されたことを確認したら、正常にルート証明書が完了しています。

 

クライアント証明書の発行

1) キーボードのWindows キーを押しながら R キーを押して、[ファイル名を指定して実行] を開き、certmgr.msc と入力して [OK] をクリックします。

 

2) ユーザーの証明書ストアが開きます。
[証明書 – 現在のユーザー] をクリックして [個人] を右クリックします。

 

3) [すべてのタスク] – [新しい証明書の要求] をクリックします。

 

4) 証明書の登録ウィザードが立ち上がります。[開始する前に] にて、[次へ] をクリックします。

 

5) [証明書の登録ポリシーの選択] にて、”Active Directory 登録ポリシー” が選択されていることを確認して [次へ] をクリックします。

 

6) [証明書の要求] にて、証明書の発行に使用する証明書テンプレートを選択して [登録] をクリックします。
今回は “ユーザー” の証明書テンプレートを選択しています。

 

7) 証明書が発行されるのを待ちます。

 

8) [証明書のインストールの結果] にて、選択した証明書テンプレートの項目にて “状態:成功” と表示されていることを確認して [完了] をクリックします。
※ CA サーバーから証明書が発行された後、対象のクライアントの証明書ストアに登録されます。

 

9) ユーザー Administrator に証明書が発行されています。

今回の手順は、ルート証明書を手動でインストールしていますが、グループ ポリシーを利用してドメインに参加している端末に自動で配布することができます。