预定义的证书模板

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

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

应用证书模板

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

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

证书模板类型

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

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

默认

模板名称:default

如果您未在 CertificateRequest 资源中指定证书模板,系统会自动使用此模板。颁发的证书会从颁发 CA 的配置文件继承 Key usage 和 Extended 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,则模板无法请求 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 模板需要 EKU TLS web server authentication。
  • 颁发 CA client-certs-ca 的 certificateProfile 仅允许 EKU TLS web client authentication。

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