証明書テンプレートと発行ポリシーの概要
このページでは、証明書テンプレート、発行ポリシー、証明書名の制約を使用して Certificate Authority Service にポリシー制御を実装する方法の概要について説明します。
ポリシー制御を使用すると、認証局(CA)プールが発行できる証明書の種類を制御できます。ポリシー制御には、大まかなものときめ細かいものの 2 種類があります。粗粒度のポリシーは、CA プール固有の制約を適用します。きめ細かいポリシーでは、特定のユーザーが CA プールで実行できるオペレーションが決まります。
証明書テンプレート
証明書発行シナリオが明確に定義されている場合は、証明書テンプレートを使用できます。証明書テンプレートを使用すると、異なる CA プールから発行された証明書間で一貫性を維持できます。証明書テンプレートを使用して、さまざまな個人が発行できる証明書の種類を制限することもできます。
証明書テンプレートについては、証明書テンプレートを作成するをご覧ください。
証明書発行ポリシー
CA マネージャーは、CA プールに証明書発行ポリシーを適用して、CA プール内の CA が発行できる証明書の種類に制限を定義できます。発行ポリシーでは、証明書 ID、証明書の有効期間、鍵の種類、証明書リクエスト モード、X.509 拡張機能の制限を定義できます。発行ポリシーには、受信するすべての証明書リクエストに適用される X.509 拡張機能のセットを含めることもできます。
発行ポリシーを使用すると、CA プール全体に特定の制限を適用できます。たとえば、発行ポリシーを使用して、次の条件を適用できます。
- 発行された証明書にはすべて、サブジェクトに
O=My organization
が含まれています。 - すべての DNS 名の末尾が
.my-org-domain.com
です。 - CA プールは、サーバー TLS 証明書のみを発行できます。
次のいずれかまたは両方のケースに該当する場合は、証明書発行ポリシーを使用することをおすすめします。
- CA プールは、明確に定義された単一のプロファイルに従って証明書を発行することを目的としています。
- X.509 拡張機能の共通のベースラインと、すべての証明書発行プロファイルに適用される追加の制限を定義できます。
発行ポリシーの詳細については、CA プールに証明書発行ポリシーを追加するをご覧ください。
CA 証明書名の制約
CAS は、RFC 5280 の名前制約セクションで定義されている CA 証明書の名前制約を適用します。 CA から発行される証明書で許可または除外する名前を制御できます。
たとえば、名前制約を持つ CA を作成して、次の条件を適用できます。
- DNS 名として使用できるのは、
my-org-domain.com
とそのサブドメインのみです。 untrusted-domain.com
とそのサブドメインは、DNS 名として使用できません。
名前制約は CA 証明書用です。これらの値は CA の作成時にのみ指定でき、後で更新することはできません。
ポリシーの競合
異なるポリシー制御メカニズムを併用すると、異なるレベルのポリシーが競合する可能性があります。このセクションでは、ポリシー制御が適用される仕組みと、ポリシーの競合を回避するためのガイダンスについて説明します。
ポリシーの適用
証明書をリクエストするときに、ポリシー制御はさまざまなレイヤで評価されます。
リクエスト属性の IAM 条件付きバインディングが最初に評価され、呼び出し元に証明書の作成または証明書テンプレートの使用に必要な権限があることを確認します。
証明書の作成中に、CA プールと証明書テンプレート発行ポリシーが、正規化された証明書リクエストに対して検証されます。CA プールの証明書発行ポリシーと証明書テンプレートの X.509 拡張機能が証明書に追加され、同じポリシーに基づいて特定の値を破棄できます。
証明書に署名する前に、CA 証明書の名前制約が証明書と照合され、サブジェクトが準拠していることが確認されます。
発行ポリシーの競合
以下は、証明書テンプレートの発行ポリシーと CA プールの発行ポリシーが競合するエラーの非包括的なリストです。
- 証明書テンプレートに、CA プールで禁止されている事前定義済みの値が含まれています。
- 証明書テンプレートに、CA プールのベースライン値とは異なる X.509 値が含まれています。
いずれの場合も、API は引数が無効なエラーを返します。
CEL の競合
CEL では、さまざまな式を実装できます。CA プールの発行ポリシーと証明書テンプレートの CEL 式が競合するなどの場合です。このような競合により、CA プールから証明書を発行できなくなります。たとえば、証明書の共通名が .example.com
で終わることを適用する CEL 式が CA プールにあり、証明書の共通名が .example.net
で終わることを適用する CEL 式が証明書テンプレートにあるとします。これらの 2 つの CEL 式は同じフィールドに異なる制限を適用するため、すべての証明書発行リクエストが失敗します。
証明書発行ポリシーと証明書テンプレートの両方を使用している場合は、CEL 式が競合しないことを確認することをおすすめします。
次のステップ
- Common Expression Language(CEL)の使用について学習する。