証明書テンプレート

  • 2020年6月23日
  • 2021年1月3日
  • AD CS

Active Directory 証明書サービスでは、CA の種類として “エンタープライズ” と “スタンドアロン” があります。
エンタープライズ CA とスタンドアロン CA の大きな違いの一つとして、証明書テンプレートの有無があげられます。
エンタープライズ CA では、証明書を発行する時に証明書テンプレートを指定して発行する必要があるため、”証明書テンプレートとは何なのか” について、しっかりと理解しておくことが大切です。

証明書テンプレートとは

証明書テンプレートとはエンタープライズ CA で使用される証明書のひな型となるもので、証明書に記載される内容や公開鍵の長さなどの設定、また証明書の発行・登録を定義したものとなります。
エンタープライズ CA では証明書を発行する場合、発行に使用する証明書テンプレートを 1 つ指定する必要があります。
発行に使用できる証明書テンプレートは 1 つのみで、複数の証明書テンプレートを指定して各設定を総和となる証明書を発行するなんてことはできません。
そのため、エンタープライズ CA で発行される証明書をカスタマイズしたい場合は、発行に使用する証明書テンプレートの設定を変更する必要があります。

証明書テンプレートでは、具体的には以下のような内容を設定することができます。

– 証明書に記載される内容 (サブジェクト名、キーの使用法、有効期間など)
– 証明書の発行方法 (CSR の署名証明書の要件など)
– 証明書の登録方法 (秘密キーエクスポート不可の設定など)
– 証明書の更新方法 (証明書の更新タイミング)

 

証明書テンプレートのバージョン

CA サーバーの Windows OS のバージョンが上がった際に、証明書テンプレートで設定できる項目や機能が追加されています。

証明書テンプレートの各世代を示したものが証明書テンプレートのバージョンとなります。

上位のバージョンほど、多機能で設定可能な項目が多いです。(AD DS でいうフォレスト・ドメインの機能レベルと似た概念です)

証明書テンプレートのバージョンはバージョン 1 4までが存在し、数が小さい程、古いバージョンです。

バージョン1

Windows 2000 Server の時に導入された証明書テンプレートです。

AD CS の役割の導入初期の頃の証明書テンプレートのため、設定項目も最小限となります。

バージョン1の証明書テンプレートは、Windows 2000 Server 以降の全ての OS バージョンで利用できます。

 

バージョン1の証明書テンプレートの特徴として、設定がハードコードされており、証明書テンプレートを新規追加したり、設定を変更することはできません。

例えば、コンピューターユーザーなどの証明書テンプレートはバージョン 1 の証明書テンプレートとなりますが、証明書テンプレート コンソールからプロパティ画面を開いても設定項目はグレーアウトしており、ユーザーが変更できないようになっています。

そのため、証明書の有効期間を延ばす等、CA サーバーで発行する証明書をカスタマイズしたい場合は、バージョン 2 以降の証明書テンプレートを利用する必要があります。

 

バージョン2

Windows Server 2003 の時に導入された証明書テンプレートです。

バージョン1の証明書テンプレートに加え、以下の設定・機能が利用できるようになります。

バージョン2の証明書テンプレートは、Windows XP / Windows Server 2003 以降の全ての OS バージョンで利用できます。

証明書の自動登録の機能が追加されたのは、バージョン2の時です。

後の勉強会で紹介しますが、証明書の自動登録という ”個人が使用する証明書をドメイン メンバーに配布” する機能を利用する場合、

証明書の発行に利用する証明書テンプレートはバージョン2以降である必要があります。

 

タブ名

項目名

要求処理

サブジェクトが許可した対称アルゴリズムを含める

要求処理

サブジェクトの秘密キーがアーカイブする

要求処理

サブジェクトが登録され、この証明書に関連付けられた秘密キーが使われていることを実行する

暗号化

最小キー サイズ

暗号化

要求で使用できる暗号化サービス プロバイダーの選択

サブジェクト

サブジェクト代替名

優先するテンプレート

優先するテンプレート

拡張機能

発行ポリシー

セキュリティ

自動登録

 

 

バージョン3

Windows Server 2008 の時に導入された証明書テンプレートです。

バージョン2の証明書テンプレートに加え、以下の設定・機能が利用できるようになります。

バージョン3の証明書テンプレートは、Windows Vista/Windows Server 2008 以降の全ての OS バージョンで利用できます。

 

タブ名

項目名

サーバー

CA データベース内に証明書および要求を保存しない

サーバー

発行される証明書に失効情報を含めない

要求処理

スマートカード証明書の自動書き換えで、新しいキーを作成できない場合は既存のキーを

暗号化

別の署名の形式を使用する

暗号化

キー格納プロバイダー

拡張機能

基本制限

 

バージョン4

Windows Server 2012 の時に導入された証明書テンプレートです。

バージョン3の証明書テンプレートに加え、以下の設定・機能が利用できるようになります。

バージョン4のテンプレートは、Windows 8 / Windows Server 2012 以降の全ての OS バージョンで利用できます。

 

タブ名

項目名

要求処理

同じキーで書き換え

サブジェクト名

自動登録書き換え要求に既存の証明書のサブジェクト情報を使用する

発行の要求

キー ベースの書き換えを許可

拡張機能

要求元が指定した発行ポリシーを有効化

キーの構成証明

キーの構成証明

キーの構成証明

適用するキーの構成証明の種類

キーの構成証明

構成証明されたキーの証明書の発行ポリシー

 

証明書テンプレートのバージョンの設定・確認場所

ユーザーが新規作成・設定変更できる証明書のテンプレートのバージョンは2以降となりますが(バージョン1はハードコードされているので、

ユーザーが作成したり変更したりはできない)、証明書のバージョンは 証明書テンプレートのプロパティ画面の [互換性] タブ(下図)で変更が可能です。

[証明機関] CA サーバーを構築したサーバーの OS のバージョンで、[証明書の受信者] はクライアント(証明書を発行する対象のドメイン メンバー) OS のバージョンとなります。

 

証明書テンプレートのバージョンの互換性

証明書テンプレートのバージョンは上位互換性はありますが下位互換性はないため、証明書テンプレートのバージョンの指定には注意が必要です。

わかりやすく言うと、新しい Windows OS でも古いバージョンの証明書テンプレートは利用できるけれども、古い Windows OS では新しいバージョンの証明書テンプレートは利用できないということです。

 

まずは、[証明機関] で指定できるバージョンについて考えてみましょう。

証明書テンプレートは構成パーティション上の [Certificate Template] コンテナ内に管理しており、ドメイン内に複数のエンタープライズ CA を構築している場合は、全てのエンタープライズ CA で共有して証明書テンプレートを利用します。

もし、作成中の証明書テンプレートを他のエンタープライズ CA でも利用する場合、利用するエンタープライズ CA Windows OS のバージョンを確認し、[互換性] タブの [証明機関] の項目で設定できるバージョンを適切に設定する必要があります。

例えば、Windows Server 2016 で構築した CA サーバーで証明書テンプレートを作成している時に、Windows Server 2008 で構築されたドメイン内の他のエンタープライズ CA でも利用する場合、設定値は “Windows Server 2003” もしくは “Windows Server 2008” を指定します。

もし、“Windows Server 2008 R2” “Windows Server 2012” 等の上位のバージョンを指定してしまうと、Windows Server 2008 エンタープライズ CA の証明書テンプレートでは認識されず、そもそも利用することができません。

 

次に [証明書の受領者] で指定できるバージョンについて考えてみましょう。

ここでは、クライアント(証明書の発行対象)となるドメイン メンバーのバージョンを確認する必要があります。

ドメイン環境に Windows 7Windows 8.1Windows 10 等の複数のバージョンのクライアントが存在する場合、 [証明書の受領者] にてバージョンを上位に設定してしまうと古い OS のクライアントには証明書を発行することができません。

例えば、“usertest” という名前の証明書テンプレートを作成し、[証明書の受領者] の項目で “Windows 8.1 / Windows Server 2012 R2” を指定した場合を考えます。

証明書を発行する時に証明書の登録のウィザードにおいて、サポートしていない Widnows 7 では usertest は発行対象の証明書テンプレートとして表示されませんが、サポートされている Windows 8.1 では表示され、usertest を利用して発行することができます。

/// Windows 7

/// Windows 8.1