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模板需要 EKUTLS web server authentication。- 颁发 CA
client-certs-ca的certificateProfile仅允许 EKUTLS web client authentication。
由于模板所需的 EKU 未包含在 CA 的配置文件允许的 EKU 列表中,因此模板的要求不是 CA 允许的参数的子集。因此,请求会被拒绝。