Appearance
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。根域记录的调整可能影响所有继承它的子域。
| 签发 CA | CAA 授权值 |
|---|---|
| DigiCert | digicert.com |
| GlobalSign | globalsign.com |
| TrustAsia 自有 CA | trustasia.com |
以 TrustAsia 自有 CA 为例:
dns
example.com. CAA 0 issue "trustasia.com"
example.com. CAA 0 issuewild "trustasia.com"DNS 控制台填写:
| 字段 | 普通域名 | 通配符 |
|---|---|---|
| 类型 | CAA | CAA |
| 主机记录 | @ | @ |
| 标志 | 0 | 0 |
| 标签 | issue | issuewild |
| 值 | trustasia.com | trustasia.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 异常导致域名验证失败。
