预定义的证书模板

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

此模板用于颁发路径长度限制为 0 的从属 CA 证书,允许证书签署最终实体证书,但不能签署其他 CA 证书。

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

从属 CA 证书 (PathLen 1)

模板名称:blankSubCACertificate_PathLen1_CSRPassthrough

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

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

冲突检测

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

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

如果 CA Service 检测到此类冲突,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-cacertificateProfile 仅允许 EKU TLS web client authentication

由于模板所需的 EKU 未包含在 CA 的配置文件允许的 EKU 列表中,因此模板的要求不是 CA 允许的参数的子集。因此,请求会被拒绝。