Certificate Authority Service は、証明書の発行プロセスを合理化して安全に実行するために、事前定義された証明書テンプレートを提供します。一般的なユースケース向けに事前構成された X.509 パラメータのセットを提供することで、これらの既製のテンプレートは証明書管理を簡素化し、人為的ミスのリスクを軽減し、セキュリティのベスト プラクティスを適用します。各テンプレートは特定のユースケース向けに設計されており、発行元の認証局(CA)によって設定された制限を尊重しながら、目的の用途に適したパラメータで証明書が発行されるようにします。
このドキュメントは、プロジェクト内で証明書のライフサイクルを管理するアプリケーション デベロッパーやデータ サイエンティストなど、アプリケーション オペレーター グループ内のユーザーを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
証明書テンプレートを適用する
テンプレートを適用するには、CertificateRequest リソースの certificateTemplate フィールドにテンプレートの名前を指定します。CA Service は、選択したテンプレートのパラメータを発行済み証明書に適用します。
CertificateRequest リソースを構造化して certificateTemplate フィールドを含める方法の詳細については、証明書をリクエストするをご覧ください。
証明書テンプレートのタイプ
次の事前定義された証明書テンプレートを使用できます。各テンプレートは特定のユースケース向けに設計されており、テンプレートが適用する X.509 パラメータが事前構成されています。
以下のテンプレートの説明では、テンプレートで明示的に設定されていないパラメータは、証明書署名リクエスト(CSR)で指定されたか、ユーザーが定義したフィールドであるかにかかわらず、CertificateRequest リソースから取得されます。
デフォルト
テンプレート名: default
このテンプレートは、CertificateRequest リソースで証明書テンプレートを指定しない場合に自動的に使用されます。発行された証明書は、発行元 CA のプロファイルから Key
usage と Extended key usage の設定を継承し、Basic constraints を CA:FALSE に設定して、証明書が他の証明書の署名に使用されないようにします。
| X509 パラメータ | 値 |
|---|---|
| RawSubject | [User defined SubjectOverride or Passthrough from CSR] |
| 基本制約 | カナダ:FALSE |
| サブジェクトの別名 | [Passthrough from CSR](CSR からのパススルー) |
| 鍵の用途 | [CA で設定された鍵の用途] |
| 鍵の拡張的用途 | [CA で設定された鍵の拡張的用途] |
クライアント TLS 証明書
テンプレート名: endEntityClientAuthCertificate
このテンプレートは、クライアントサイドの TLS 認証用のエンド エンティティ証明書を発行します。発行された証明書は Extended key usage を TLS web client
authentication に、Basic constraints を CA:FALSE に設定し、証明書が他の証明書の署名に使用されないようにします。
| X509 パラメータ | 値 |
|---|---|
| RawSubject | [User defined SubjectOverride or Passthrough from CSR] |
| 基本制約 | カナダ:FALSE |
| サブジェクトの別名 | [Passthrough from CSR](CSR からのパススルー) |
| 鍵の用途 | 重大、デジタル署名、鍵の暗号化 |
| 鍵の拡張的用途 | TLS ウェブ クライアント認証 |
サーバー TLS 証明書
テンプレート名: endEntityServerAuthCertificate
このテンプレートは、サーバーサイド TLS 認証用のエンド エンティティ証明書を発行します。これは、ウェブサーバーでの使用に最適です。発行された証明書は Extended
key usage を TLS web server authentication に、Basic constraints を CA:FALSE に設定し、証明書が他の証明書の署名に使用されないようにします。
| X509 パラメータ | 値 |
|---|---|
| RawSubject | [User defined SubjectOverride or Passthrough from CSR] |
| 基本制約 | カナダ:FALSE |
| サブジェクトの別名 | [Passthrough from CSR](CSR からのパススルー) |
| 鍵の用途 | 重大、デジタル署名、鍵の暗号化 |
| 鍵の拡張的用途 | TLS ウェブサーバー認証 |
下位 CA 証明書(PathLen 0)
テンプレート名: blankSubCACertificate_PathLen0_CSRPassthrough
このテンプレートは、パス長の制約が 0 の下位 CA 証明書を発行します。これにより、証明書はエンド エンティティ証明書に署名できますが、他の CA 証明書には署名できません。
| X509 パラメータ | 値 |
|---|---|
| RawSubject | [User defined SubjectOverride or Passthrough from CSR] |
| 基本制約 | カナダ:TRUE, pathlen: 0 |
| サブジェクトの別名 | [Passthrough from CSR](CSR からのパススルー) |
| 鍵の用途 | [CSR で設定された鍵の用途] |
| 鍵の拡張的用途 | [CSR で設定された鍵の拡張的用途] |
下位 CA 証明書(PathLen 1)
テンプレート名: blankSubCACertificate_PathLen1_CSRPassthrough
このテンプレートは、パス長の制約が 1 の下位 CA 証明書を発行します。これにより、証明書はエンド エンティティ証明書と、パス長が 0 の他の下位 CA 証明書に署名できます。
| X509 パラメータ | 値 |
|---|---|
| RawSubject | [User defined SubjectOverride or Passthrough from CSR] |
| 基本制約 | カナダ:TRUE, pathlen: 1 |
| サブジェクトの別名 | [Passthrough from CSR](CSR からのパススルー) |
| 鍵の用途 | [CSR で設定された鍵の用途] |
| 鍵の拡張的用途 | [CSR で設定された鍵の拡張的用途] |
競合の検出
各 CA には、発行できる証明書のタイプを定義するプロファイルがあります。たとえば、CA がクライアント認証証明書のみを発行するように制限されることがあります。CA のプロファイルは、CA の作成時に CertificateAuthority リソースの certificateProfile セクション内で構成されます。詳細については、ルート認証局を作成すると下位認証局を作成するをご覧ください。
事前定義されたテンプレートを使用して証明書をリクエストすると、CA Service は発行 CA の構成に対してテンプレートのパラメータを検証します。有効にするには、選択したテンプレートで定義された X.509 パラメータが、発行元の CA の certificateProfile に従って許可されているパラメータのサブセットである必要があります。テンプレートが CA に付与する権限がない属性または権限をリクエストすると、競合が発生します。たとえば、発行 CA が clientAuth の付与のみを許可されている場合、テンプレートは serverAuth の Extended key usage(EKU)をリクエストできません。
CA Service がこのような競合を検出すると、CertificateRequest は失敗します。CertificateRequest リソースのステータスを調べて、障害の原因を特定できます。
例
次のシナリオでは、client-certs-ca という名前の CA が、クライアント認証専用の証明書を発行するように構成されています。certificateProfile は、許可される Extended key usage が TLS web client authentication のみであることを指定します。
次の CertificateRequest を送信して、endEntityServerAuthCertificate テンプレートを使用してサーバーの証明書を発行します。
apiVersion: pki.security.gdc.goog/v1
kind: CertificateRequest
metadata:
name: server-cert-req
namespace: my-project
spec:
certificateAuthorityRef:
name: client-certs-ca
namespace: my-project
csr: "..."
certificateTemplate: endEntityServerAuthCertificate
signedCertificateSecret: server-cert-secret
このリクエストは、次の理由で失敗します。
endEntityServerAuthCertificateテンプレートには EKUTLS web server authenticationが必要です。- 発行 CA
client-certs-caには、EKUTLS web client authenticationのみを許可するcertificateProfileがあります。
テンプレートで必要な EKU が CA のプロファイルで許可されている EKU のリストに含まれていないため、テンプレートの要件は CA の許可されたパラメータのサブセットではありません。そのため、リクエストは拒否されます。