Active Directory 証明書サービスでは、スタンドアロンとエンタープライズの2種類の CA を構築することができます。エンタープライズ CA の方は、Active Directory ドメイン サービスと連携して、ドメイン参加している端末が証明書を発行したり、自動で配布することができます。
今回は、ドメイン端末がエンタープライズ CA から証明書が発行される仕組みについて紹介します。
エンタープライズ CA とは
Windows Server OS では「Active Directory 証明書サービス」を利用して、プライベートの証明機関を簡易に構築することができます。Active Directory 証明書サービスでは、スタンドアロンとエンタープライズの2種類の証明機関を構築することができます。
エンタープライズ CA は「Active Directory ドメイン サービス」と連携して、証明書を発行・配布することができる証明機関です。ドメイン環境を利用している環境では、証明書の運用・管理がしやすいというメリットがあります。エンタープライズ CA の機能面の特徴は以下の通りです。
- CA 証明書をドメイン参加端末に自動配布
- 証明書テンプレートを指定して、証明書を発行
- CRL 配布ポイント(CDP)や機関情報アクセス(AIA)は、ドメイン コントローラーで公開
- 証明書の自動登録の機能が利用可能
エンタープライズ CA は Active Directory ドメイン サービスと連携しており、エンタープライズ CA を構築したタイミングで AD データベースの構成パーティション上に CA に関する情報が自動で展開されます。エンタープライズ CA の情報が保存される場所は、以下の通りです。
“Public Key Services” 配下にある各コンテナには、それぞれ以下の情報が保存されています。
- AIA : CA 証明書の情報
- CDP : Base CRL/Delta CRL の情報
- Certificate Template : 証明書テンプレートの情報
- Certificate Authorities : CA サーバーの情報
- Enrollment Services : 登録エージェント(証明書の発行要求の処理を受け付けるサービス)の情報
- KRA : フォレストの回復キーエージェント証明書の情報
また、エンタープライズ CA で特徴的なのは、証明書を発行する時に証明書テンプレートを指定する必要があるということです。そのため、エンタープライズ CA を運用する際には、証明書テンプレートについて設定や管理について理解しておくことが必要です。
証明書テンプレートとは
証明書テンプレートとは、エンタープライズ CA で発行される証明書のひな形となるものです。証明書のサブジェクト名や公開鍵の長さなどの各種設定を定義することができます。エンタープライズ CA で証明書を発行するときは、証明書の発行に使用する証明書テンプレートを指定する必要があります。
エンタープライズ CA 上で、証明機関の管理コンソール(certsrv)を開くと [証明書テンプレート] の項目があります。[証明書テンプレート] の項目を選択すると、そのエンタープライズ CA で公開されている証明書テンプレートの一覧が表示されます。
エンタープライズ CA では、証明書の発行に利用できる証明書テンプレートを公開した状態にします。逆に言うと、公開されていない証明書テンプレートを指定して、証明書を発行することはできません。そのため、証明書の発行に利用したい証明書テンプレートは、公開された状態にしておく必要があります。
証明書テンプレートの公開/非公開の手順
エンタープライズ CA を構築した時、既定で以下の証明書テンプレートが公開された状態となります。
- ディレクトリ電子メール レプリケーション
- ドメイン コントローラーの認証
- Kerberos 認証
- EFS 回復エージェント
- 基本 EFS
- ドメイン コントローラー
- Web サーバー
- コンピューター
- ユーザー
- 下位の証明機関
- 管理者
エンタープライズ CA で利用できる証明書テンプレートを追加したい場合は、対象の証明書テンプレートを公開する作業が必要です。また、公開中の証明書テンプレートを利用できないようにしたい場合、証明書テンプレートを非公開にする作業が必要です。証明書テンプレートの公開/非公開の手順について紹介します。
証明書テンプレートの公開
1) CA サーバーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] より [証明機関] を開きます。
3) certsrv の管理コンソールの画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] – [証明書テンプレート] を右クリックして、[新規作成] – [発行する証明書テンプレート] をクリックします。
4) [証明書テンプレートの選択] にて、”公開する証明書テンプレート” を選択して [OK] をクリックします。
5) [証明書テンプレート] の一覧に、”公開する証明書テンプレート” が追加されていることを確認します。
証明書テンプレートの非公開
1) CA サーバーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] より [証明機関] を開きます。
3) certsrv の管理コンソールの画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] – [証明書テンプレート] を選択します。
4) 画面の右ペインにて、”公開停止する証明書テンプレート” を右クリックして [削除] をクリックします。
5) “この証明機関で選択された証明書テンプレートを無効にしますか?” と表示されたら、[はい] をクリックします。
6) [証明書テンプレート] の一覧に、”公開する証明書テンプレート” が削除されたことを確認します。
証明書テンプレートのカスタマイズ
カスタマイズした証明書テンプレートの作成手順
ドメイン端末での証明書の発行の動作
ドメイン環境にエンタープライズ CA を構築している場合、ドメイン参加している端末は簡易に証明書を発行することができます。エンタープライズ CA から証明書を発行する方法は主に 2 つあり、① mmc の証明書の登録ウィザードで手動で証明書の発行要求を送信する方法、② 証明書の自動登録の機能を利用して証明書を配布する方法があります。
エンタープライズ CA から証明書を発行する動作を紹介するために、今回は、① の手動で証明書を発行する際に、裏で自動で行われている証明書の動作を説明します。
まず、mmc の証明書の登録ウィザードより、ユーザー証明書を手動で発行する手順は以下の通りです。
1) [ファイル名を指定して実行] を開き、certmgr.msc と入力して [OK] をクリックします。
2) 画面の左ペインより、[証明書 – 現在のユーザー] – [個人] を右クリックして、[すべてのタスク] – [新しい証明書の要求] をクリックします。
3) [開始する前に] にて、[次へ] をクリックします。
4) [証明書の登録ポリシーの選択] にて、”Active Directory 登録ポリシー” が選択されている状態であることを確認し、[次へ] をクリックします。
5) [証明書の要求] にて、発行する対象の証明書テンプレートのチェックボックスを有効にして [登録] をクリックします。
6) “状態:成功” と表示されたら、証明書の登録が成功しています。
7) [証明書 – 現在のユーザー] – [個人] – [証明書] を選択して、対象の証明書テンプレートで発行されている証明書が登録されていることを確認します。
- クライアント端末はドメイン コントローラーに LDAP クエリを送信します。
LDAP クエリで、ドメイン内にあるエンタープライズ CA を検索します。
また、ドメイン内にある各エンタープライズ CA が公開している証明書テンプレートの一覧を検索します。 - ドメイン内にある全てのエンタープライズ CA の FQDN と、各エンタープライズ CA が公開している証明書テンプレートの一覧の結果を返します。
- CA サーバーに対し、発行に利用する証明書テンプレートを指定して証明書の発行要求を行います。証明書テンプレートはユーザーが選択したものです。証明書の発行要求は RPC 通信で行われます。
- CA サーバーは証明書を発行し、クライアント端末へ証明書を送信します。
- クライアント端末は、発行された証明書を登録します。
ドメイン環境でエンタープライズ CA を利用している場合、証明書の自動登録の機能を利用して、ユーザー証明書やコンピューター証明書を自動で発行・登録することができます。 ドメイン環境での一般のシステム運用において証明書を利用する場合、多数の[…]
複数のエンタープライズ CA が存在する環境
同じフォレスト内に複数のエンタープライズ CA を構築することができます。フォレスト内のドメインに参加している端末は、フォレスト内のどのエンタープライズ CA も利用できます。
指定された証明書テンプレートを公開しているエンタープライズ CA が複数ある場合、いずれか 1 台のエンタープライズ CA から証明書が発行されます。詳細な内部動作としては、まず、クライアント端末はドメイン コントローラーに、指定した証明書テンプレートを公開しているエンタープライズ CA の一覧を取得します。ドメイン コントローラーから複数のエンタープライズ CA が応答されてきた場合、クライアント内部でエンタープライズ CA を順位付けして、順番に証明書の発行要求を送信します。最初に応答したエンタープライズ CA から、証明書が発行されます。
エンタープライズ CA の順位付けのアルゴリズムは以下の通りです。
- コストが低いサイトにあるエンタープライズ CA が優先されます
- 同じサイトにエンタープライズ CA が複数ある場合は、ランダムに順位付けが決まります