配置

CAA 记录生成器

选好允许为你的域名签发证书的 CA,生成可以直接填进 DNS 控制台的 CAA 记录。

浏览器本地运行 你输入的内容只在本地用 JavaScript 处理,不会上传到 ssl.sh。

@ 表示域名本身;也可以填子域名前缀,如 www。
允许签发的 CA
RFC 8657:只有这个 ACME 账户能申请证书。

最后核实

CAA 记录生成器用来生成告诉证书颁发机构“谁可以给我的域名签证书”的 DNS 记录。勾选你使用的 CA,决定通配符证书怎么处理,再按你的 DNS 服务商格式复制结果。工具在浏览器里运行。

怎么用

  1. 填域名和主机记录(@ 表示域名本身,也可以填子域名前缀)。
  2. 勾选允许签发的 CA,其他 CA 的标识可以写在下面的文本框里。
  3. 选择通配符策略:与上面相同、禁止通配符、或只允许指定的 CA。
  4. 可选:填 iodef 报告地址(mailto: 或 https:)和 Let's Encrypt 的 accounturi。
  5. 把 BIND 记录,或 Cloudflare、阿里云、DNSPod 的填写内容复制到 DNS 控制台。

生成结果示例:

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"

在国内 DNS 控制台怎么填

  • 阿里云云解析:添加记录,记录类型选 CAA,主机记录填 @,记录值填 0 issue "letsencrypt.org" 这样的完整内容,每条一行记录。
  • DNSPod(腾讯云):同样选 CAA 类型,主机记录 @,记录值填完整的 0 issue "letsencrypt.org"。
  • 每个允许的 CA 各加一条 issue 记录。

规则怎么组合

  • issue 列出可以签发所有证书的 CA,多条 issue 表示其中任何一家都可以。
  • 有 issuewild 时,通配符证书改为按 issuewild 判断;issuewild ";" 表示完全禁止通配符证书。
  • 一条 CAA 记录都没有时,任何 CA 都可以签。主域名上的记录也管住没有自己记录的子域名。

发布之前

  1. 用 CT 日志查询找出这个域名的所有证书,记下每一家签发 CA,别漏了 CDN 和云厂商托管的证书。
  2. 发布记录,等过了 TTL,再用 CAA 记录查询确认。
  3. 续期报 CAA 错误时,参考 CAA 记录导致无法签发。

常见问题

CA 标识该填什么?

以 CA 官方文档为准。很多证书品牌的实际签发方是另一家 CA,比如 PositiveSSL 由 Sectigo 签发(sectigo.com),RapidSSL、GeoTrust 由 DigiCert 签发(digicert.com)。不确定的话,用证书解析工具看现有证书的签发者。

用了 Cloudflare,要加 Cloudflare 用的 CA 吗?

Cloudflare 文档说明,添加 CAA 记录后,它会自动为 Universal SSL 使用的 CA 补充记录,保证边缘证书正常续期。你自己申请的证书用到的 CA 需要自己加。

accounturi 有什么用?

把签发限制在 CA 的某一个 ACME 账户上(RFC 8657)。即使别人通过了域名验证,也没法用其他账户拿到证书。Let's Encrypt 的账户地址可以在 ACME 客户端的账户文件里找到。

CAA 会导致续期失败吗?

会,如果漏掉了正在用的 CA。发布前把这个域名下所有证书(包括 CDN、云 WAF、云厂商托管的证书)都列出来,把它们的 CA 都加上。

资料来源

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