快速回答
如何为您的域名设置 CAA 记录?
在域名顶点按 0 issue "ca.example.net" 的形式添加 CAA 记录,指明每个允许签发的证书颁发机构,然后按 RFC 8659 的定义,为通配符添加 issuewild,为违规报告添加 iodef。Wardmint 的免费 DNS 在每个域名上都支持 CAA 记录,一个 .com 的价格为US$12.49/年,同一组记录无需额外费用。
CAA 标签及其作用
| 标签 | 示例记录 | 作用 |
|---|---|---|
| issue | 0 issue "ca.example.net" | 允许该签发机构为该名称签发证书 |
| issue(空) | 0 issue ";" | 不允许任何签发机构为该名称签发证书 |
| issuewild | 0 issuewild "ca.example.net" | 仅适用于通配符名称,并对这些名称覆盖 issue |
| issuewild(空) | 0 issuewild ";" | 禁止通配符证书,而普通证书仍然允许 |
| iodef | 0 iodef "mailto:[email protected]" | 提供一个 URL 或地址,供 CA 报告违反策略的请求 |
什么是 CAA 记录?
CAA 记录是一种 DNS 资源记录,由 RFC 8659 定义,域名所有者可以借此列出哪些证书颁发机构可以为该名称签发证书。其呈现形式依次是 CAA、flags 值、标签和值。flags 字段为一个八位组,第 0 位是签发者关键标志,置位时写作 128;几乎所有记录都使用 0。标签是 issue 这样的单词,值是字符串,通常带引号。
在签发之前,证书颁发机构会查询被要求认证的名称的 CAA 记录。如果在该名称下没有找到,它会依次向上查找每一级父级标签,并在找到第一组 CAA 记录时停止,这是 RFC 8659 的规定;它从不检查根。如果任何地方都没有这样的记录,则签发不受限制。因此,位于顶点的记录会涵盖所有没有自己记录的子域名。
一个便于引用的定义:CAA 记录是公开的、DNS 层面的允许名单,列出允许为某个域名签发证书的证书颁发机构。
为什么加密项目需要 CAA 记录?
因为 DNS 劫持者需要一张有效证书才能让假前端看起来真实,而 CAA 会让这一步更困难。Blockaid 追踪了 2026 年 2 月 16 日至 23 日之间的五起前端入侵事件,并注意到一个特征:SSL 证书在 DNS 更改的当天签发。在 Nerochain 一案中,为该项目的域名签发了通配符证书。
根据 Wardmint 2026 年 11 月 12 日对 Blockaid 报告的解读,七天内发生的五起入侵事件至少显示出一种重复出现的攻击者习惯,而 CAA 记录可以对其造成干扰。如果您的记录只允许您自己的机构,那么更改 DNS 的攻击者还必须先更改 CAA 记录,其他机构才会签发,而这一额外的更改正是您可以监控的信号。
CAA 本身并不是一种防御。控制您 DNS 的攻击者同样可以编辑 CAA 记录,而且 RFC 8659 指出,CAA 不影响已经签发的证书。请把它视为与 如何保护您的域名免遭 DNS 劫持 中各项控制措施并列的一层,并配合来自 Certificate Transparency 监控 的提醒使用。
issue、issuewild 和 iodef 的确切语法是什么?
每条记录的形式为名称、类别、CAA、flags、标签、值,值紧随标签,完全按照 RFC 8659 的规定。issue 标签指明允许签发的签发者域名。issuewild 标签仅适用于通配符名称,存在时会对通配符请求覆盖 issue。iodef 标签提供一个使用 mailto、http 或 https 的报告 URL。
要禁止某个名称的所有签发,请发布一条签发者为空的 issue 记录,即带引号的分号。对于普通域名,为您使用的每个机构发布一条 issue 记录;如果希望单独控制通配符,再发布一条 issuewild 记录。请从您所用机构的文档中获取确切的签发者标识,因为它是由该机构自行选定的域名。
example.com. 3600 IN CAA 0 issue "ca.example.net"
example.com. 3600 IN CAA 0 issuewild ";"
example.com. 3600 IN CAA 0 iodef "mailto:[email protected]"parked.example.com. 3600 IN CAA 0 issue ";"如何在防御性域名上设置 CAA 记录?
在只做重定向的防御性域名上,只允许提供重定向服务的那一个机构,如果没有任何内容通过 HTTPS 应答,则禁止签发。停放而没有网站服务的域名不需要证书,因此 0 issue ";" 会取消其他任何人的机会。通过 HTTPS 把访问者转发到您主站的防御性域名需要为此申请证书,所以必须允许提供该证书的机构。
先从 如何将防御性域名重定向到您的主站 中的方案开始,然后添加相应的 CAA 记录。在 Wardmint,免费 DNS 托管,支持 A、AAAA、CNAME、ALIAS、MX、TXT、NS、SRV 和 CAA 记录,托管式 DNSSEC,也可使用您自己的域名服务器(2 至 13 个),因此记录与转发在同一个客户区中添加。持有 .com, .net, .org, .io, .xyz, .app 这组核心域名(每年 $128.94)的项目,会把同一组 CAA 记录应用到全部六个名称上。
分六步设置 CAA 记录
列出您使用的机构
检查是哪家证书颁发机构为您的主站、文档和任何通配符签发证书,并记下各自发布的签发者标识。
检查现有记录
运行 dig CAA example.com +short,查看顶点或某个父级名称上是否已经存在 CAA 记录集。
为每个机构添加一条 issue 记录
在顶点添加一条 CAA 记录,flags 为 0,标签为 issue,并将机构的标识写在引号内。
单独控制通配符
添加一条 issuewild 记录,指明可以签发通配符证书的机构;如果不想要通配符证书,则使用带引号的分号。
添加报告地址
添加一条 iodef 记录,使用有人阅读的 mailto 地址。
测试,然后监控签发
再次运行 dig CAA,申请或续期一张证书以确认签发仍然正常,并为您的名称设置 Certificate Transparency 提醒。
哪些错误会导致证书无法签发?
常见的错误是漏掉了您忘记自己在使用的机构。托管平台、内容分发服务和电子邮件提供商有时会为您的子域名申请自己的证书。如果您的 CAA 记录集遗漏了它们,续期就会失败,往往悄无声息,直到证书过期。发布之前,请列出所有为您域名下的名称提供服务的服务商。
第二个错误是签发者标识拼写错误,这会拦住所有人,包括您本想允许的机构。请用一次真实的续期来测试。第三个错误是忘记上层的 CAA 记录会适用于没有自己记录的子域名,因此限制严格的顶点记录可能会阻止子域名的续期。
更改记录绝不会吊销已经存在的证书。如果已经签发了意外的证书,请将其视为一起事件,并按照 如何保护您的域名免遭 DNS 劫持 中的步骤处理。每周 7 天、12 小时内回复邮件,包括 DNSSEC、CAA 记录和滥用举报方面的协助,包括对 CAA 记录的协助。
关于 CAA 记录的常见问题
CAA 记录会使已经签发的证书失效吗?
不会。RFC 8659 指出 CAA 只反映当前的授权,因此更改它不会影响之前已签发的证书。
每个子域名上都需要 CAA 记录吗?
不需要。证书颁发机构会向上查找父级名称,直到找到 CAA 记录集,因此顶点处的一组记录就能涵盖没有自己记录的子域名。
issue 记录中的分号是什么意思?
它表示空的签发者,并禁止该名称的所有签发。请在不提供 HTTPS 服务的域名上使用它。
攻击者可以更改我的 CAA 记录吗?
可以,如果他们控制了您的 DNS 或注册商账号。这就是为什么 CAA 要与被锁定的账号和证书提醒配合使用。
Wardmint 支持 CAA 记录吗?
支持。Wardmint 的免费 DNS 托管支持 CAA 记录,客服也会提供协助:每周 7 天、12 小时内回复邮件,包括 DNSSEC、CAA 记录和滥用举报方面的协助。
小结
- CAA 记录列出允许为某个域名签发证书的证书颁发机构 (RFC 8659)。
- 语法:flags、标签、值,例如 0 issue 后面跟引号内的机构。
- 通配符使用 issuewild,违规报告使用 iodef;分号表示禁止签发。
- CA 会向上查找父级名称,直到找到 CAA 记录集;从不检查根。
- CAA 不影响已经签发的证书。
- Blockaid 发现,在 2026 年 2 月的劫持事件中,证书在 DNS 更改的当天签发。
- Wardmint 的免费 DNS 在每个域名上都支持 CAA 记录。
来源 (2)
- RFC 8659:DNS 证书颁发机构授权(CAA)资源记录 — IETF / RFC Editor (读取于 2026-11-12)
- 前端劫持与威胁 Web3 协议的 Web2 攻击面 — Blockaid (读取于 2026-11-12)