认证机构授权(CAA)记录让域名持有者声明,哪些证书颁发机构可以为该域名签发证书。只有当记录与真实续期路径一致、且操作者理解策略如何从父级名称继承时,它才有用。
检视当前策略
查询确切主机名及其父名称:
for name in www.example.test example.test test; do
printf '== %s\n' "$name"
dig +noall +answer CAA "$name"
done
这里用占位域名通过已配置的解析器查询。叶子处空应答不一定代表没有适用策略:查询会跟随别名,并在逐级向上时遇到第一个相关的非空 CAA 记录集就停止,而不是合并所有父级限制。还要查看 DNS 状态与权威信息;只显示答案的空输出可能隐藏 NXDOMAIN 或 SERVFAIL。诊断变更时应比较权威应答与递归查询结果。
匹配 CA 的签发者标识
记录使用如 issue 或 issuewild 等标签与一个签发者域值:
example.test. 3600 IN CAA 0 issue "letsencrypt.org"
该值是授权标识,不是证书里的显示名。在证书颁发机构的当前文档中确认它。没有 issuewild 时,issue 也控制通配符签发;存在 issuewild 时,通配符请求优先适用它。同一标签的多条记录提供备选授权,并不是要求每一家 CA 同时参与。CAA 也不选择某张具体的中间证书。
在续期前编排 DNS 变更
在当前证书健康时添加或收紧 CAA。等待先前 TTL 对应的完整时间,查询权威与递归应答,并运行 ACME 客户端支持的暂存或续期测试。准备好回滚记录。
不要在过期事故期间添加限制性记录,除非签发者路径已验证。一条语法正确但错误的策略,会把自动续期变成硬失败。
观察签发失败
CAA 检查发生在签发时,而不是每次 HTTPS 请求。修改 CAA 不会吊销已有证书,也不能证明历史签发符合当时的策略。因此证书监控必须同时覆盖当前过期与续期尝试。把有效的 DNS 应答随 ACME 失败一起记录,而不是只记录一条笼统的授权错误。
来源
- RFC 8659 — DNS Certification Authority Authorization,CAA 查询与属性语义,已核验 2026-10-15。
- Let’s Encrypt: CAA,签发者标识与运维指引,已核验 2026-10-15。