术语表

CAA 记录 (Certification Authority Authorization)

最后核实

定义

CAA 记录是一种 DNS 记录,用来声明哪些证书颁发机构可以为该域名签发证书,所有公共 CA 签发前都必须检查。

CAA 记录(Certification Authority Authorization,RFC 8659)是一种 DNS 资源记录,列出允许为某个域名签发证书的 CA。issue 标签控制普通证书,issuewild 控制通配符证书,iodef 指定违规报告的联系方式。自 2017 年 9 月起,公开信任的 CA 必须检查 CAA:先查完整域名,查不到再逐级向上查父域名,直到找到 CAA 记录为止。

为什么重要

CAA 能降低你没在用的 CA 发生错误签发的风险,例如攻击者在别家 CA 骗过了域名验证。按 SC-067 投票(MPIC),CA 必须从多个网络视角查询 CAA,DNS 欺骗更难得逞。RFC 8657 还增加了 accounturi 和 validationmethods 参数,在支持的 CA 上可以把签发限制到某个 ACME 账户或某种验证方式。阿里云云解析、DNSPod 等国内 DNS 服务都可以直接添加 CAA 记录。

例子

example.com.  3600  IN  CAA  0 issue "letsencrypt.org"
example.com.  3600  IN  CAA  0 issuewild ";"
example.com.  3600  IN  CAA  0 iodef "mailto:security@example.com"

以上记录只允许 Let's Encrypt 签发普通证书,并禁止任何 CA 签发通配符证书。检查 CA 会看到什么:

dig example.com CAA +short

常见误区

  • 浏览器会检查 CAA。 只有 CA 在签发时检查,它对已签发的证书和 TLS 连接没有任何影响。
  • 没有 CAA 记录就不能签发。 恰恰相反,没有 CAA 记录意味着任何公共 CA 都可以签发。
  • CAA 里填云厂商的域名就行。 在云平台购买的证书由背后的某家 CA 签发,CAA 要写那家 CA 公布的标识(例如 digicert.com、letsencrypt.org),否则续期会被拒绝。

延伸阅读