证书模板和颁发政策概览
本页面简要介绍了如何使用证书模板、签发政策和证书名称限制在 Certificate Authority Service 中实现政策控制。
借助政策控件,您可以控制证书授权机构 (CA) 池可以颁发的证书类型。政策控制分为两种:粗粒化控制和精细化控制。粗粒度政策会应用 CA 池专用限制条件。精细的政策决定了特定用户可以对 CA 池执行的操作。
证书模板
如果您有明确定义的证书颁发场景,则可以使用证书模板。您可以使用证书模板来确保从不同 CA 池颁发的证书保持一致。您还可以使用证书模板来限制不同用户可以签发的证书类型。
如需了解证书模板,请参阅创建证书模板。
证书颁发政策
CA 管理器可以将证书颁发政策附加到 CA 池,以对 CA 池中的 CA 可以颁发的证书类型施加限制。颁发政策可以对证书身份、证书生命周期、密钥类型、证书请求模式和 X.509 扩展定义限制。颁发政策还可以包含一组应用于所有传入证书请求的 X.509 扩展。
借助签发政策,您可以对整个 CA 池应用特定限制。例如,您可以使用发行政策强制执行以下条件:
- 所有已颁发的证书的正文中都包含
O=My organization
。 - 所有 DNS 名称都以
.my-org-domain.com
结尾。 - CA 池只能颁发服务器 TLS 证书。
如果符合以下一种或两种情况,我们建议您使用证书颁发政策:
- 您的 CA 池旨在根据单个定义明确的配置文件颁发证书。
- 您希望为 X.509 扩展定义一个通用基准,并为所有证书颁发配置文件定义其他限制。
如需详细了解颁发政策,请参阅向 CA 池添加证书颁发政策。
CA 证书名称约束
CAS 会强制执行 RFC 5280 名称限制条件部分中定义的 CA 证书中的名称限制条件。借助此策略,您可以控制 CA 颁发的证书中允许或排除哪些名称。
例如,您可以创建具有名称限制条件的 CA,以强制执行以下条件:
- 只有
my-org-domain.com
及其子网域可以用作 DNS 名称。 untrusted-domain.com
及其子网域不得用作 DNS 名称。
名称限制条件适用于 CA 证书。这些参数只能在创建 CA 期间指定,之后无法更新。
政策冲突
同时使用不同的政策控制机制时,不同级别的政策可能会发生冲突。本部分介绍了如何强制执行政策控制,并提供了有关如何避免政策冲突的指导。
强制执行政策
请求证书时,系统会在不同层级评估政策控制。
系统会先评估请求属性的 IAM 条件绑定,以确保调用方具有创建证书或使用证书模板所需的权限。
在证书创建期间,系统会根据标准化证书请求对 CA 池和证书模板颁发政策进行验证。CA 池的证书颁发政策和证书模板中的 X.509 扩展程序会添加到证书中,并且系统可能会根据这些政策丢弃某些值。
在对证书进行签名之前,系统会根据证书对 CA 证书中的名称限制条件进行验证,以确保正文符合相关要求。
发行政策冲突
以下列出了可能导致证书模板的颁发政策与 CA 池的颁发政策冲突的错误(并非详尽无遗)。
- 证书模板包含 CA 池禁止使用的预定义值。
- 证书模板包含的 X.509 值与 CA 池基准值不同。
在上述所有情况下,该 API 都会返回无效参数错误。
CEL 冲突
CEL 支持实现多种表达式。在某些情况下,CA 池的颁发政策和证书模板中的 CEL 表达式会发生冲突。这些冲突会导致 CA 池无法颁发证书。例如,假设 CA 池有一个 CEL 表达式,用于强制要求证书的公用名以 .example.com
结尾,而证书模板有一个 CEL 表达式,用于强制要求证书的公用名以 .example.net
结尾。由于这两个 CEL 表达式对同一字段施加了不同的限制,因此所有证书签发请求都会失败。
如果您同时使用证书颁发政策和证书模板,我们建议您确保它们的 CEL 表达式不会冲突。
后续步骤
- 了解如何使用通用表达式语言 (CEL)。