跳到内容

🔐 CAA 记录

CAA(Certification Authority Authorization)是一种通过 DNS 声明哪些证书颁发机构被授权颁发 SSL/TLS 证书的机制。有助于降低误颁发的风险。显示 issue、issuewild、iodef 三种标签。

完全免费 无需注册 服务器处理 无日志 / 数据库 限速 5 种语言 深色模式

⚠️ 请求从 DevLab 服务器发起。不允许私有 IP 地址和 localhost。

📖 本诊断能告诉你什么

CAA 记录用 DNS 声明「只有这些证书颁发机构可以为本域名签发证书」。根据 CA/Browser Forum 的 Baseline Requirements,CA 在签发前必须查询 CAA。本诊断会读取该记录,以及可能被继承的父域 CAA。但请注意,它无法吊销已经签发的证书,误签发的检测由 CT 日志负责。

检查项 含义 未通过时的处理
没有 CAA 记录 没有它并不算错误,但含义是「全世界任何 CA 都可以签发」。即使证书来自域名管理者从未打算使用的 CA,机制上也不会拦截。反过来说,只写一行 CAA 就能收窄可签发的 CA。 请准确写出所用 CA 的标识符,形如 example.com. IN CAA 0 issue "letsencrypt.org"标识符写错会导致下次续期悄然失败,证书随之过期。常见值有 letsencrypt.org / digicert.com / sectigo.com / pki.goog / amazon.com,请务必对照各 CA 的官方文档确认。
未指定 issuewild 当没有 issuewild 时,issue 的内容同样适用于通配符证书,也就是说你在 issue 中允许的 CA 也能签发 *.example.com。通配符证书一旦泄露一张,所有子域都会被冒充,若不需要就值得显式禁止。 若不使用通配符,请写 example.com. IN CAA 0 issuewild ";"单个分号表示「不允许任何 CA」。若只允许特定 CA,则写成 0 issuewild "digicert.com"
父域的 CAA 正在生效 CAA 查询会在所查名称上没有记录时逐级向父级回溯。若 shop.example.com 没有 CAA,则适用 example.com 的记录。正是这种继承,导致「子域想用别的 CA 却始终签发不了」的典型卡点。 若要在子域使用不同的 CA,请在该子域自身放置 CAA 记录——只要子级有任意一条记录,就不会再查父级。当签发失败并提示 CAA 阻止时,首先应怀疑这种继承。另外要注意,若该名称是 CNAME,CAA 会在 CNAME 指向的目标上求值。

CAA 的内容本身以明文经 DNS 分发,因此能伪造 DNS 的攻击者同样能伪造 CAA。要使其成为有效防线,请与 DNSSEC 配合使用。此外,CAA 是「阻止签发」的机制,而非「察觉误签发」的机制。若想掌握以你的域名实际签发了哪些证书,订阅 Certificate Transparency 日志(监控 crt.sh,或使用 Cert Spotter 之类的通知服务)是唯一可靠的办法。

🔗 相关工具