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
此模板颁发的从属 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,则模板无法请求 serverAuth 的 Extended key usage (EKU)。
如果 CA 服务检测到此类冲突,则 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 允许的参数的子集。因此,我们拒绝了该请求。