术语表

基本约束 (Basic Constraints)

最后核实

定义

基本约束是 X.509 证书扩展,用来声明该证书是否属于 CA,以及其下方还允许出现多少层 CA。

基本约束(Basic Constraints)包含两个字段:布尔值 cA 和可选的 pathLenConstraint(路径长度约束)。cA 为真时,证书对应的密钥可以签发其他证书(还需配合 keyCertSign 密钥用途);路径长度则限制证书链中它下面还能出现几层中间 CA。RFC 5280 要求所有 CA 证书都必须包含该扩展并标记为关键(critical);终端证书要么不含该扩展,要么设为 CA:FALSE。

为什么重要

正是这个标志阻止了普通网站证书冒充 CA 去签发证书。早期有 TLS 实现不检查它,导致任何持有普通证书的人都能为其他域名签发证书,此后这项检查成了 X.509 路径验证的标配。它也能解释一些实际报错:用 CA:TRUE 生成的服务器证书在 Firefox 中可能报 MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY;带 pathlen:0 的 下级 CA 无法再签发中间证书。自建内网 CA 时,根证书和中间证书要设为 CA:TRUE,网站证书要设为 CA:FALSE。

例子

X509v3 Basic Constraints: critical
    CA:TRUE, pathlen:0

这是 openssl x509 -noout -text 对“只能签发终端证书的 CA”的显示方式,终端证书则显示 CA:FALSE。

常见误区

  • pathlen:0 表示这个 CA 什么都不能签。 它可以签发终端证书,只是不能再签发下一级 CA 证书。
  • 自签名证书都应该是 CA。 自签名根证书需要 CA:TRUE,但直接作为服务器证书使用的自签名证书不应带这个标志。

延伸阅读