CAA 是域名的签发放行名单
CAA(证书颁发机构授权)记录用来限制哪些 CA 可以为某个域名签发证书:CA 在签发前必须先查询该域名的 CAA,命中白名单之外就不得签发。它解决的是多 CA 时代的护栏问题——域名所有者不必监控上百家 CA,只要在 DNS 里声明授权范围即可。
基本信息
| 记录类型 | CAA,类型值为 257 |
|---|---|
| 结构 | flags 加 tag 加 value,如 0 issue 某 CA 域名 |
| 规范 | RFC 8659(替代 RFC 6844) |
| 查找规则 | 未在子域配置时沿域名树向上查找,可能在父域找到已有策略 |
| 未配置时 | 任何合规 CA 都可签发,签发的证书会出现在透明度日志中 |
常用 tag
| tag | 作用 | 示例 |
|---|---|---|
| issue | 允许签发普通证书的 CA | 0 issue 某 CA 域名 |
| issuewild | 允许签发通配符证书的 CA | 0 issuewild 分号表示禁止 |
| iodef | 违规签发时的报告邮箱或地址 | 0 iodef mailto 安全邮箱 |
| critt(旧) | 曾在草案中定义的严重标记 | 现已不再使用 |
查询与配置
查询与配置
dig +short example.com CAA # 查询当前策略
dig +short www.example.com CAA # 子域未配置时会看到向上继承的结果
# 典型记录:
# 0 issue "letsencrypt.org" # 只允许该 CA 签发普通证书
# 0 issuewild ";" # 禁止任何通配符签发
# 0 iodef "mailto:security@example.com" # 违规签发的通知地址典型使用场景
- 收紧签发来源:只授权当前使用的 CA,减少误签风险
- 禁止通配符证书:环境里从不用通配符时用 issuewild 分号彻底关掉
- 接收违规签发通知:配置 iodef 让异常签发可被发现
- 迁移 CA 时核对策略:换签发方前先更新 CAA,否则签发会被拒绝
只写 issue 不写 issuewild 时通配符签发仍可能被允许:规范允许这类情况回退到 issue 判断,要真正禁掉通配符就得显式写 issuewild 加一个分号。
CAA 是约束合规 CA 的机制,不是技术强制:不守规矩的 CA 仍可能签发,但会被透明度日志与浏览器生态追责,同时 iodef 配置能让违规行为更快暴露。
修改 CAA 后要等缓存的 TTL 过期才会被 CA 的验证节点看到:计划更换签发方时应提前一天以上改好记录,避免申请被拒后还要等缓存失效。