预定义的证书模板

Certificate Authority Service 提供预定义的证书模板,以帮助简化和保护证书颁发流程。这些现成的模板为常见使用情形提供预配置的 X.509 参数集,可简化证书管理、降低人为错误风险,并强制执行安全最佳实践。每个模板都针对特定使用情形而设计,以确保颁发的证书具有适合其预期用途的正确参数,同时还遵守颁发证书的证书授权机构 (CA) 设置的任何限制。

本文档适用于应用运维人员群组中的受众群体,例如应用开发者或数据科学家,他们负责管理项目中的证书生命周期。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

应用证书模板

如需应用模板,请在 CertificateRequest 资源的 certificateTemplate 字段中指定模板的名称。CA Service 会将所选模板中的参数应用于颁发的证书。

如需详细了解如何构建 CertificateRequest 资源并添加 certificateTemplate 字段,请参阅申请证书

证书模板类型

以下是可用的预定义证书模板。每个模板都针对特定用例而设计,并预先配置了模板强制执行的 X.509 参数。

在下面的模板说明中,任何未由模板明确设置的参数都取自 CertificateRequest 资源,无论该资源是在证书签名请求 (CSR) 中提供还是由您定义的字段。

默认

模板名称:default

如果您未在 CertificateRequest 资源中指定证书模板,系统会自动使用此模板。颁发的证书会从颁发 CA 的配置文件中继承 Key usageExtended key usage 设置,并将 Basic constraints 设置为 CA:FALSE,从而防止该证书用于签署其他证书。

X509 参数
RawSubject [用户定义的 SubjectOverride 或来自 CSR 的直通式]
基本限制条件 CA:FALSE
主题备用名称 [从 CSR 直通]
密钥用途 [CA 中设置的密钥使用情况]
扩展的密钥用途 [在 CA 中设置的扩展密钥用途]

客户端 TLS 证书

模板名称:endEntityClientAuthCertificate

此模板用于颁发最终实体证书,以进行客户端 TLS 身份验证。颁发的证书将 Extended key usage 设置为 TLS web client authentication,并将 Basic constraints 设置为 CA:FALSE,从而防止该证书用于为其他证书签名。

X509 参数
RawSubject [用户定义的 SubjectOverride 或来自 CSR 的直通式]
基本限制条件 CA:FALSE
主题备用名称 [从 CSR 直通]
密钥用途 关键、数字签名、密钥加密
扩展的密钥用途 TLS Web 客户端身份验证

服务器 TLS 证书

模板名称:endEntityServerAuthCertificate

此模板可签发用于服务器端 TLS 身份验证的最终实体证书,非常适合与 Web 服务器搭配使用。签发的证书将 Extended key usage 设置为 TLS web server authentication,并将 Basic constraints 设置为 CA:FALSE,从而防止该证书用于为其他证书签名。

X509 参数
RawSubject [用户定义的 SubjectOverride 或来自 CSR 的直通式]
基本限制条件 CA:FALSE
主题备用名称 [从 CSR 直通]
密钥用途 关键、数字签名、密钥加密
扩展的密钥用途 TLS Web 服务器身份验证

从属 CA 证书 (PathLen 0)

模板名称:blankSubCACertificate_PathLen0_CSRPassthrough

此模板颁发的从属 CA 证书具有路径长度限制 0,这表示该证书可以对最终实体证书进行签名,但不能对其他 CA 证书进行签名。

X509 参数
RawSubject [用户定义的 SubjectOverride 或来自 CSR 的直通式]
基本限制条件 CA:TRUE, pathlen: 0
主题备用名称 [从 CSR 直通]
密钥用途 [CSR 中设置的密钥用途]
扩展的密钥用途 [CSR 中设置的扩展密钥用途]

从属 CA 证书 (PathLen 1)

模板名称:blankSubCACertificate_PathLen1_CSRPassthrough

此模板颁发的从属 CA 证书的路径长度限制为 1,这允许该证书签署路径长度为 0 的最终实体证书和其他从属 CA 证书。

X509 参数
RawSubject [用户定义的 SubjectOverride 或来自 CSR 的直通式]
基本限制条件 CA:TRUE, pathlen: 1
主题备用名称 [从 CSR 直通]
密钥用途 [CSR 中设置的密钥用途]
扩展的密钥用途 [CSR 中设置的扩展密钥用途]

冲突检测

每个 CA 都有一个配置文件,用于定义允许其签发的证书类型。例如,CA 可能仅限于颁发客户端身份验证证书。创建 CA 时,CA 的配置文件在 CertificateAuthority 资源的 certificateProfile 部分中配置,如创建根证书授权机构创建从属证书授权机构中所述。

当您使用预定义模板请求证书时,CA Service 会根据签发 CA 的配置验证模板的参数。为确保有效性,所选模板中定义的 X.509 参数必须是颁发 CA 根据其 certificateProfile 允许的参数的子集。如果模板请求的属性或权限超出了 CA 的授权范围,则会发生冲突。例如,如果签发 CA 仅获授权授予 clientAuth,则模板无法请求 serverAuthExtended key usage (EKU)。

如果 CA 服务检测到此类冲突,则 CertificateRequest 会失败。您可以检查 CertificateRequest 资源的状态,了解失败的原因。

示例

在以下场景中,配置了一个名为 client-certs-ca 的 CA,用于仅颁发客户端身份验证证书。其 certificateProfile 指定了唯一允许的 Extended key usageTLS 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 模板需要 EKU TLS web server authentication
  • 发证 CA client-certs-ca 具有仅允许 EKU TLS web client authenticationcertificateProfile

由于模板所需的 EKU 未包含在 CA 的配置文件允许的 EKU 列表中,因此模板的要求并非 CA 允许的参数的子集。因此,我们拒绝了该请求。