【AD CS基礎】エンタープライズCAでの証明書の発行の仕組み

  • 2022年10月8日
  • 2022年10月14日
  • AD CS

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 の情報が保存される場所は、以下の通りです。

CN=Public Key Services,CN=Services,CN=Configuration,DC=<ドメイン名>
 

Public Key Services” 配下にある各コンテナには、それぞれ以下の情報が保存されています。

  • AIA : CA 証明書の情報
  • CDP : Base CRL/Delta CRL の情報
  • Certificate Template : 証明書テンプレートの情報
  • Certificate Authorities : CA サーバーの情報
  • Enrollment Services : 登録エージェント(証明書の発行要求の処理を受け付けるサービス)の情報
  • KRA : フォレストの回復キーエージェント証明書の情報

 

エンタープライズ CA では、CDP や AIA をドメイン コントローラーで管理しています。ドメイン参加している端末は、エンタープライズ CA から発行された証明書を検証するときは、ドメイン コントローラーにアクセスして CRL や CA 証明書を入手します。

また、エンタープライズ 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) [証明書テンプレート] の一覧に、”公開する証明書テンプレート” が削除されたことを確認します。

 

この手順で証明書テンプレートが AD データベースから削除されることはなく、あくまでエンタープライズ CA での証明書テンプレートが公開が停止される(=非公開となる)手順となります。
 
 

証明書テンプレートのカスタマイズ

既定で多数の証明書テンプレートが用意されていますが、環境や用途に応じて、カスタマイズした証明書テンプレートを作ることができます。カスタマイズした証明書テンプレートを作成する時は、既存の証明書テンプレートの同様の設定をコピーして作成された、新しい証明書テンプレートのオブジェクトを作成するという形になります。
既存の証明書テンプレートをコピーするため、新規作成された証明書テンプレートの各種設定はコピー元の証明書テンプレートの設定と同じです。そのため、コピー元とする証明書テンプレートは、作成したい証明書テンプレートと設定が近いものを選ぶことをお勧めします。例えば、Web サーバー用の SSL 証明書を発行するための証明書テンプレートを新規作成するときは、”Web サーバー” をもとにするとよいでしょう。
カスタマイズする証明書テンプレートでは、バージョン 2 以上の証明書が作成できます。

カスタマイズした証明書テンプレートの作成手順

1) エンタープライズ CA に Enterprise Admins もしくはルート ドメインの Domain Admins の権限をもつユーザーでログオンします。
2) [ファイル名を指定して実行] を開き、certtmpl.msc と入力して [OK] をクリックします。
3) コピー元とする証明書テンプレートを右クリックして [テンプレートの複製] をクリックします。
4) [新しいテンプレートのプロパティ] の [全般] タブにて、[テンプレート表示名] と [テンプレート名] の項目に任意の名前を指定します。名前を指定しないと、証明書テンプレートのオブジェクトが作成されないことがあるためご留意ください。
5) その他のタブで、必要な設定を変更します。
6) [新しいテンプレートのプロパティ] にて、[適用]、[OK] をクリックします。
 
新規作成した証明書テンプレートを利用する場合は、エンタープライズ CA にて証明書テンプレートを公開する必要があります。
 

ドメイン端末での証明書の発行の動作

ドメイン環境にエンタープライズ CA を構築している場合、ドメイン参加している端末は簡易に証明書を発行することができます。エンタープライズ CA から証明書を発行する方法は主に 2 つあり、① mmc の証明書の登録ウィザードで手動で証明書の発行要求を送信する方法、② 証明書の自動登録の機能を利用して証明書を配布する方法があります。

エンタープライズ CA から証明書を発行する動作を紹介するために、今回は、① の手動で証明書を発行する際に、裏で自動で行われている証明書の動作を説明します。

まず、mmc の証明書の登録ウィザードより、ユーザー証明書を手動で発行する手順は以下の通りです。

 

1) [ファイル名を指定して実行] を開き、certmgr.msc と入力して [OK] をクリックします。

2) 画面の左ペインより、[証明書 – 現在のユーザー] – [個人] を右クリックして、[すべてのタスク] – [新しい証明書の要求] をクリックします。

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

 

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

 

5) [証明書の要求] にて、発行する対象の証明書テンプレートのチェックボックスを有効にして [登録] をクリックします。

 

6) “状態:成功” と表示されたら、証明書の登録が成功しています。

 

7) [証明書 – 現在のユーザー] – [個人] – [証明書] を選択して、対象の証明書テンプレートで発行されている証明書が登録されていることを確認します。

 

 
上記の通り、証明書の登録ウィザードに従って操作を進めることで、簡易に証明書を発行することができました。mmc の証明書ウィザードで証明書の発行要求を送信している時、以下のような処理が行われています。
証明書の登録において、内部動作の処理は以下の通りです。
  1. クライアント端末はドメイン コントローラーに LDAP クエリを送信します。
    LDAP クエリで、ドメイン内にあるエンタープライズ CA を検索します。
    また、ドメイン内にある各エンタープライズ CA が公開している証明書テンプレートの一覧を検索します。

  2. ドメイン内にある全てのエンタープライズ CA の FQDN と、各エンタープライズ CA が公開している証明書テンプレートの一覧の結果を返します。
  3. CA サーバーに対し、発行に利用する証明書テンプレートを指定して証明書の発行要求を行います。証明書テンプレートはユーザーが選択したものです。証明書の発行要求は RPC 通信で行われます。
  4. CA サーバーは証明書を発行し、クライアント端末へ証明書を送信します。
  5. クライアント端末は、発行された証明書を登録します。

 

証明書の自動登録の場合でも、エンタープライズ CA での証明書の発行の流れは同じです
 
関連記事

ドメイン環境でエンタープライズ CA を利用している場合、証明書の自動登録の機能を利用して、ユーザー証明書やコンピューター証明書を自動で発行・登録することができます。 ドメイン環境での一般のシステム運用において証明書を利用する場合、多数の[…]

 
 

複数のエンタープライズ CA が存在する環境

同じフォレスト内に複数のエンタープライズ CA を構築することができます。フォレスト内のドメインに参加している端末は、フォレスト内のどのエンタープライズ CA も利用できます。

指定された証明書テンプレートを公開しているエンタープライズ CA が複数ある場合、いずれか 1 台のエンタープライズ CA から証明書が発行されます。詳細な内部動作としては、まず、クライアント端末はドメイン コントローラーに、指定した証明書テンプレートを公開しているエンタープライズ CA の一覧を取得します。ドメイン コントローラーから複数のエンタープライズ CA が応答されてきた場合、クライアント内部でエンタープライズ CA を順位付けして、順番に証明書の発行要求を送信します。最初に応答したエンタープライズ CA から、証明書が発行されます。

エンタープライズ CA の順位付けのアルゴリズムは以下の通りです。

  1. コストが低いサイトにあるエンタープライズ CA が優先されます
  2. 同じサイトにエンタープライズ CA が複数ある場合は、ランダムに順位付けが決まります

 

証明書テンプレートが複数のエンタープライズ CA で公開されている場合、いずれのエンタープライズ CA からも証明書が発行される可能性があります。
 
mmc の証明書の登録ウィザードで証明書を発行する場合は、証明書の発行要求先のエンタープライズ CA を指定することができます。
1) [ファイル名を指定して実行] を開き、certmgr.msc と入力して [OK] をクリックします。
2) 画面の左ペインより、[証明書 – 現在のユーザー] – [個人] を右クリックして [すべてのタスク] – [新しい証明書の要求] をクリックします。
3) [開始する前に] にて、[次へ] をクリックします。
 
4) [証明書の登録ポリシーの選択] にて、”Active Directory 登録ポリシー” が選択された状態で、[次へ] をクリックします。
 
5) 対象の証明書テンプレートの項目を選択し、[詳細] を展開して [プロパティ] をクリックします。
 
6) [証明書のプロパティ] の項目にて、[証明機関] タブを選択して、発行要求を送信したい対象のエンタープライズ CA のみを有効にして、[次へ] をクリックします。
 
7) [証明書のプロパティ] にて、[適用]、[OK] をクリックします。
8) [登録] をクリックします。
 
 証明書の自動登録の場合
証明書の自動登録の機能で証明書を発行する場合は、発行元のエンタープライズ CA は制御できません。そのため、証明書の自動登録の機能で、特定のエンタープライズ CA のみから発行させたい場合は、そのエンタープライズ CA のみで対象の証明書テンプレートを公開します