检查

CAA 记录查询

查询域名的 CAA 记录,看清哪些证书颁发机构可以为它签发证书。

最后核实

CAA 记录查询告诉你哪些证书颁发机构可以为某个域名签发证书。输入 example.com 这样的名字,点 查询 CAA,工具会显示生效的 CAA 记录、它们在 DNS 树上的位置,以及普通证书和通配符证书分别允许哪些 CA。

怎么用

  1. 输入你要申请证书的确切名字,比如 shop.example.com。
  2. 点 查询 CAA。
  3. 看汇总:普通证书允许的 CA(issue)、通配符证书允许的 CA(issuewild),以及设置了的 iodef 报告地址。

CAA 是怎么查找的

CA 先查请求的名字本身的 CAA 记录;没有的话去掉最左边一级再查(shop.example.com → example.com → com),用第一组找到的记录。所以主域名上的 CAA 记录会管住所有没有自己记录的子域名。整条树都没有 CAA 记录时,任何 CA 都可以签。

记录怎么读

  • 0 issue "letsencrypt.org":允许 Let's Encrypt 签发普通证书。
  • 0 issuewild ";":不允许任何 CA 签发通配符证书。
  • 0 iodef "mailto:security@example.com":CA 拒绝签发时可以发报告到这里。
  • 只有 0 issue ";":禁止任何 CA 签发,续期也会失败。

国内使用时注意

阿里云、腾讯云等平台的免费证书和付费证书可能来自不同的 CA,加 CAA 之前先用证书解析工具看现有证书的签发者,或查看云厂商文档。CDN 和 WAF 产品托管的证书也要算进去。

续期报 CAA 错误时,参考 CAA 记录导致无法签发。要生成新的记录(BIND、Cloudflare、阿里云解析、DNSPod 格式),用 CAA 记录生成器。

常见问题

续期证书时报 CAA 错误,该查什么?

查你要签发的确切名字(包括子域名)。只要有一组记录对它生效,CA 的标识(比如 letsencrypt.org)就必须出现在 issue 里,通配符证书则要出现在 issuewild 里。另外,这个名字上如果有 CNAME,查询会被带到别的域名去。

加了 CAA 记录,已经签发的证书会失效吗?

不会。CAA 只在签发时检查,加了限制性记录也不会吊销或影响现有证书,只会阻止其他 CA 以后再签。

修改 CAA 记录多久生效?

CA 在验证时实时查 DNS,所以等解析器看到新记录就生效,最长要等记录的 TTL。另外按照 Baseline Requirements,CA 可以沿用 8 小时内(或 TTL 更长时按 TTL)的查询结果。

资料来源

  1. RFC 8659: DNS CAA
  2. RFC 8657: CAA accounturi 和 validationmethods
  3. Let's Encrypt:CAA