AZ Tools

CAA 记录构建器 (DNS 证书颁发机构授权)

网络

CAA 记录 (RFC 8659,原 6844) 是一种 DNS TXT 类型记录,告诉公共证书颁发机构哪些 CA 可以为你的域名签发证书。按 CA/Browser Forum Baseline Requirements,每个 CA 在签发前必须检查 CAA — 若记录存在但其不在列表中,将拒绝签发。这是对不当或错误签发的小而有力的防御,免费。定义了三个 tag: `issue` 授权一个 CA 签发常规证书,`issuewild` 授权一个 CA 签发通配符证书 (若缺省则与 `issue` 相同),`iodef` 提供事故通知联系 (mailto:/https:)。每条记录带 flags 字节; 设置 critical 位 (128) 让 CA 在无法理解相关参数时拒绝。本工具构建记录并以两种格式输出: 完整 BIND 区域文件语法 (粘贴到主区域),分行 tag/value 格式 (面向单独询问的控制面板)。常见 CA 列表让你一键添加 Let's Encrypt、DigiCert、Sectigo、Google、Amazon 等。特殊值 `;` 表示 '禁止所有 CA' — 当前不需签发时的强默认。

记录

Tag
Tag
Tag

添加常见 CA (作为 issue 记录)

BIND 区域格式

example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild "letsencrypt.org"
example.com. IN CAA 0 iodef "mailto:security@example.com"

tag / 值 行

面向单独询问 flags、tag、value 的 DNS 控制面板。格式: flags tag 值

  0  issue      "letsencrypt.org"
  0  issuewild  "letsencrypt.org"
  0  iodef      "mailto:security@example.com"
关于 CAA 记录

CAA 即 Certificate Authority Authorization (RFC 8659)。是一种 DNS 记录,告诉公共 CA 是否可为你的域名签发证书。CA 必须在每次签发时检查 CAA,未列入时拒绝。本工具输出两种格式: 带正确转义可直接粘贴到区域文件的完整 BIND 语法,以及面向控制面板 (Cloudflare、Route53 等) 的 flags / tag / value 表。issue 或 issuewild 中的特殊值 `;` 表示 '禁止所有 CA' — 当前未使用 TLS 时的强默认。CAA 是分层的: apex 上的记录覆盖所有子域 (除非下面有更具体的 CAA 集)。由于 CA 缓存,记录完全传播最多需 8 小时。

使用方法

  1. 输入 apex 或子域名 (CAA 从叶向上查询,apex 设置通常覆盖所有)。
  2. 点击常见 CA 按钮添加初始 `issue` 记录。按需编辑 tag、值或 critical 标志。
  3. 若要签发通配符证书,添加 `issuewild` 记录。否则省略 — 仅 `issue` 不覆盖通配符。
  4. 添加 mailto: 或 https: 地址的 `iodef` 记录,让 CA 可通知你政策违规。
  5. 把 BIND 输出粘贴到区域文件 (若 DNS 控制面板分别询问 tag 和 value,用分行格式)。

常见问题

CAA 记录放哪里?
放在你要保护的同一域名。CAA 查询从请求名向 apex 上溯 — `api.example.com` 的证书请求依次查询 `api.example.com`、`example.com`、根。多数人在 apex 放一组 CAA 覆盖所有子域。子域级 CAA 仅当你希望那里使用不同策略时才需要。
`issue letsencrypt.org` 会阻止其他 CA 签发通配符吗?
会 — 若有 `issue` 记录且无 `issuewild`,`issue` 也约束通配符。但若任何 `issuewild` 存在,则通配符遵循 `issuewild`。最安全的模式是当你两类都需要时显式列出两者,或永远不需通配符时仅添加 `issue`。允许常规却拒绝通配符的常见做法是在 `issuewild` 中放 `;`。
critical 标志做什么?
比特 7 (值 128) 是 issuer-critical 标志。在未知 tag 上设置时 CA 必须拒绝签发。今天仅定义了 `issue`、`issuewild`、`iodef`,critical 主要影响未来兼容性。一般场景请关闭 (flags = 0); 仅当刻意指定所有 CA 必须理解的 tag 时才用 128。
新 CAA 记录多快被 CA 遵守?
按 Baseline Requirements,CA 在签发时检查 CAA,先前值缓存的 TTL 上限为 8 小时。所以新记录在所有 CA 完全生效可能要 8 小时。为避免旧缓存的否定值阻止签发,初次设置时记录 TTL 设为 5-60 分钟,稍后再增大。
DNSSEC 会影响 CAA 吗?
若你的区域用 DNSSEC 签名,CA 必须验证签名并将未签名响应视为缺失。错误配置的 DNSSEC 会破坏 CAA 检查并阻断证书续期。在依赖 CAA 强制前用 dnsviz.net 之类工具验证区域。

相关工具