Skip to content

CAA 限制排查与配置 ​

CAA 用于指定哪些 CA 可以为域名签发证书。即使域名验证通过,如果 CAA 未授权实际签发 CA,证书仍无法签发。

查询现有 CAA ​

不方便使用命令行时,可通过 MySSL CAA 检测 查询授权记录,再对照实际签发 CA 检查。

sh
dig CAA example.com +short

支持 CAA 查询的 nslookup 也可使用:

sh
nslookup -type=CAA example.com

例如 0 issue "digicert.com" 表示允许 DigiCert 签发普通域名证书。

检查证书中的所有业务域名,与 DCV 并行排查。+short 为空时,改用 dig CAA example.com 查看 status;正常无数据、SERVFAIL 和超时是不同结果。只查当前名称不足以确认不存在有效 CAA。

找到实际生效的 CAA ​

  • 从证书业务域名开始查询,通配符先去掉 *.。每一步查询都按 DNS 规则跟随业务 CNAME 等别名;找到第一组非空 CAA 记录后停止,不与更高父域的 CAA 合并。
  • 如果该步查询跟随别名后仍无 CAA,再查当前查询名称的父域。例如 app.example.com 指向 service.example.net,查询目标未返回 CAA 时,下一步查 example.com,不是自动沿 example.net 的父域一路继承。
  • _dnsauth 上的 CNAME 用于 DCV 验证委派;CAA 查找从证书中的业务域名开始。

规则依据:RFC 8659 §3。父域或别名查询失败时应先排障,不能按“无 CAA”继续判断。

按实际签发 CA 配置授权 ​

优先请域名管理员确认组织策略及所需 CA,再在适用的 CAA 记录组中增补授权,不必删除其他仍需使用的 CA。根域记录的调整可能影响所有继承它的子域。

签发 CACAA 授权值
DigiCertdigicert.com
GlobalSignglobalsign.com
TrustAsia 自有 CAtrustasia.com

以 TrustAsia 自有 CA 为例:

dns
example.com. CAA 0 issue "trustasia.com"
example.com. CAA 0 issuewild "trustasia.com"

DNS 控制台填写:

字段普通域名通配符
类型CAACAA
主机记录@@
标志00
标签issueissuewild
值trustasia.comtrustasia.com

这里的 @ 是解析区 example.com 根域的示例。需要在子域设置独立策略时,按 DNS 平台填写相对主机名,并确认是否自动追加区名;不是所有证书都必须在 @ 添加记录。

在实际生效的同一组 CAA 中,issuewild 存在时只用它判断通配符授权;没有 issuewild 时,通配符使用 issue。普通非通配符域名不使用 issuewild。

空授权和其他标签 ​

issue ";" 不授予任何 CA 普通域名签发权限;同组没有其他适用授权时会阻止签发。但授权是叠加的,例如同时存在 issue ";" 和 issue "trustasia.com",后者仍可授权 TrustAsia,不能把前者当作覆盖所有授权的禁止开关。issuewild ";" 按相同原则作用于通配符授权。

iodef 用于指定报告地址;签发授权由适用的 issue、issuewild 等规则决定。检查授权时,还需核对 critical 标签(标志 128)是否受该 CA 支持,以及附加参数的要求是否满足。参见 RFC 8659 §4。

授权值按订单实际签发 CA 的要求填写。同一销售品牌可能使用不同 CA 层级,配置前确认该产品的授权值。

确实无需限制时再删除 ​

只有在没有限制签发 CA 的管理要求、并经域名管理员确认后,才删除相关 CAA 限制记录。删除前核对其他证书业务;删除子域名记录后,父域 CAA 仍可能生效。不要通过把值改成 ";" 来取消限制。

修改后复查 ​

sh
dig CAA example.com

按上述查找规则复查各业务域名,确认有效授权及相关缓存已更新,同时核对 DCV 状态,再触发订单重新验证或签发。

如果返回 SERVFAIL、超时,或不同网络结果不一致,请按照 MPIC 多视角域名验证排障 检查 DNS 线路及海外访问。查询失败不能当作没有 CAA 限制。

查询返回 SERVFAIL 时,进一步查看 DNSSEC 异常导致域名验证失败。