默认策略
在证书颁发流程中,有两个地方可以应用默认值:在创建 X.509 证书签名请求 (CSR) 之前和在创建 X.509 证书之前。在第一种情况下,是 cert-manager 应用默认值。在第二种情况下,是颁发者应用默认值。
这两个情况之间的一个重要区别是,在第一种情况下,可以应用更多默认属性。例如,由于私钥仍然需要生成,所以私钥的所有属性都可以被设置为默认值。在第二种情况下,私钥已经生成。此外,在第一种情况下,颁发者引用本身可以设置为默认值,但在第二种情况下则不行。例如,在一个特定的命名空间中,颁发者可以被设置为一个特定的颁发者。
应用默认值是为了简化证书申请者的操作体验。它不会阻止申请者覆盖默认值。因此,可以使用审批策略(有关详细信息,请参阅 审批策略)。
cert-manager 应用的默认值:在创建 X.509 证书签名请求 (CSR) 之前
为了在创建 X.509 证书签名请求 (CSR) 之前应用默认值,必须将默认值应用于用于创建 CSR 的输入。创建 CSR 后,无法修改它,否则会使它的签名无效。这意味着不能将默认值应用于 CertificateRequest 或 CertificateSigningRequest 资源中包含的 CSR 的任何属性。
相反,必须将默认值应用于用于创建 CertificateSigningRequest 的 Certificate 资源。当使用 CSI 驱动程序时,必须将默认值应用于 CSI 注释或 CSI 驱动程序配置。要动态地将默认值应用于这些资源,可以使用 kyverno
等工具。像 Helm、kustomize 等 CI/CD 工具也可以用来模板化并将默认值应用于这些资源。
颁发者应用的默认值:在创建 X.509 证书之前
在创建 X.509 证书之前,颁发者可以使用默认值来设置结果证书中的属性。更一般地说,颁发者可以自由地使用任何逻辑来将 X.509 证书签名请求 (CSR) 中的属性映射到 X.509 证书中的属性(有关详细信息,请参阅 颁发策略)。