域名安全与保护

CAA 记录:锁定 SSL 签发的简单防护措施

CAA 记录:锁定 SSL 签发的简单防护措施
要点
  • CAA DNS 记录列出哪些证书颁发机构可以为你的域名签发 SSL/TLS 证书,而自 2017 年 9 月起,合规的 CA 就被要求必须检查它。
  • 它堵上了“任何受信任的 CA 都能为你签发证书”这个漏洞,把你的攻击面从每一家根机构收缩到你实际使用的那几家 CA。
  • 使用 issue、issuewild 和 iodef 标签;一个空的 issue 值(";")会阻止所有签发,而 128 标志位会把标签标记为关键(critical)。
  • 最常见的失误是忘记你的 CDN 或主机所使用的某家 CA,这会悄悄破坏续期——在发布之前请盘点每一家机构。
  • 把 CAA 与 DNSSEC、身份验证器 2FA 和注册商锁搭配使用;在一个有能力的地方注册或管理域名——按成本价的 Porkbun 或 Cloudflare,或者用于优质名称并提供估值、商标查询和 DNS 管理的 Atom.com。

CAA(Certification Authority Authorization,证书颁发机构授权)记录是一条 DNS 条目,用于准确指定哪些证书颁发机构可以为你的域名签发 SSL/TLS 证书。发布这样一条记录后,每一家合规的 CA 都必须拒绝其他任何机构提交的证书申请——从而堵上一个大多数域名所有者从未意识到敞开着的漏洞。

自 2017 年 9 月起,CA/Browser Forum 要求所有受公开信任的证书颁发机构在签发前检查 CAA 记录。这一行 DNS 记录把“几十家 CA 中的任何一家都能为我的域名背书”变成了“只有我指定的那几家才行”。本指南将说明 CAA 记录的作用、它能阻止的那种不易察觉的攻击,以及如何在不破坏证书续期的前提下添加它们。

CAA 记录的作用

CAA 记录与你的 A、MX 和 TXT 记录一起存放在域名的 DNS 区域中。它的职责很明确:公布你已授权为该域名签发 TLS/SSL 证书的证书颁发机构清单,任何遵守规则的 CA 在签署证书之前都必须读取这份清单。

关键细节在于检查发生的时机。CAA 记录是在证书被申请或续期的那一刻由 CA 读取的——而不是访客连接时由他们的浏览器读取。它是对签发的控制,而非对实时流量的控制。这意味着添加一条 CAA 记录对你已经持有的证书毫无影响,也不会让一个正常运行的网站出问题;它只管控今后谁可以签发新证书。

检查不再是可选项。在 CA/Browser Forum 将其设为强制要求之前,对 CAA 的支持十分罕见,而且基本被忽视。如今,遵守你的 CAA 记录已是每一家受信任 CA 都同意遵循的基线要求之一。

CAA 记录封堵的被忽视的攻击途径

你的浏览器信任着几十家根证书颁发机构。在没有 CAA 记录的情况下,其中任何一家都可以为你的域名签发一份有效且受浏览器信任的证书——无论是哪一家,你的访客都会看到那把安全锁。你的证书安全程度,取决于整个信任池中最薄弱的那家 CA。

这并非假设。2011 年,荷兰的证书机构 DigiNotar 被入侵,并被用来为多个主流域名签发伪造证书,这些证书随后被用于截获加密流量。还有一些 CA 因验证漏洞或社会工程学而误签了证书。在每一起案例中,域名所有者都没有任何过错——弱点出在一家他们从未选择与之合作的 CA 身上。

CAA 记录把这片攻击面从“地球上的每一家 CA”收缩到你实际使用的那一两家。如果攻击者欺骗或攻陷了某家不相关的机构,这家机构现在有义务读取你的 CAA 记录,发现自己不在清单上,然后拒绝签发。CAA 并不能让误签绝无可能,但它堵住了通往误签的最便捷的那条路。

CAA 记录剖析

一条 CAA 记录由三部分组成:一个标志字节(flag byte)、一个标签(tag)和一个值(value)。你会用到三种标签:

  • issue——授权某家 CA 为该域名及其子域名签发证书。典型的值是 letsencrypt.org。
  • issuewild——专门适用于诸如 *.example.com 这样的通配符证书,当它存在时会针对通配符证书覆盖 issue 的设置。
  • iodef——一个地址(mailto: 或 https://),CA 应将被阻止的或企图进行的未授权签发报告到此,这样你才能真正得知攻击的发生。

一组典型的记录是:0 issue "letsencrypt.org"、0 issuewild "letsencrypt.org" 以及 0 iodef "mailto:[email protected]"。开头的 0 是标志位;将其设为 128 会把该标签标记为“关键(critical)”,意味着无法理解该标签的 CA 必须拒绝签发,而不是继续进行。

有两个特殊的值值得了解。一个空的 issue 值——issue ";"——会禁止所有签发,这对于永远不该拥有证书的停放域名来说非常理想。而要授权多家 CA,只需添加更多 issue 记录,每家机构一条即可。

Explore Crypto Trading

Cryptocurrency trading is one of the fastest-growing financial markets — open 24/7, globally accessible, and full of opportunity for those who learn the fundamentals first.

  • Trade spot, futures & copy-trading on one platform
  • Start with as little as $10 — practice risk-free on the testnet
  • Built-in TradingView charts, grid bots & DCA tools

Free Crypto Trading Academy → · Domain Trading Academy →

锁定 CA、账户与验证方法

CAA 的能力不止于指定一家 CA。后来的一项规范增加了一些参数,让你能把签发绑定到该机构的特定账户和验证方法上:

  • accounturi——将签发锁定到某一个 ACME 账户,这样即便是使用同一家 CA 的人,也无法用另一个账户获取证书。
  • validationmethods——限制接受哪些验证质询类型,例如只接受 dns-01,从而阻止更易被伪造的 HTTP 验证。

一条经过加固的记录可能是这样:0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/12345; validationmethods=dns-01"。各家 CA 对这些参数的支持程度各不相同,因此在依赖它们之前请先测试。

WSOT 2026: Squad Leader Slots Are Open — Up to $128,000 per Leader

Join Now

如何为你的域名添加 CAA 记录

  1. 盘点你的所有 CA。列出每一家为你签发证书的机构——你的 CDN(Cloudflare、Fastly)、你的主机或负载均衡器(AWS 使用 amazon.com,Google 使用 pki.goog),以及任何手动申请的证书(Let's Encrypt、DigiCert、Sectigo、GlobalSign)。漏掉一家,它的续期就会悄无声息地失败。
  2. 添加记录,在你的 DNS 服务商处使用上文的 issue、issuewild 和 iodef 标签。大多数控制面板都提供专门的 CAA 记录类型;少数则要求使用原始格式。
  3. 验证。用 dig CAA yourdomain.com 自行查询,或使用公开的 CAA 测试工具,然后确认证书续期仍然成功。

整个改动只是寥寥几行 DNS 记录,不花一分钱,并且删除这些记录就能立即回滚——这是你能做到的最省钱的安全提升之一。

会悄悄破坏续期的那些错误

  • 忘记 CDN 或平台的 CA。最经典的失误:你把域名锁定到 Let's Encrypt,结果你的 CDN 证书无法续期,因为它的颁发机构从未被授权。
  • 忽视通配符。如果你依赖 *.example.com 这类证书,却只设置了 issue,某些配置仍会阻止通配符证书。请显式添加 issuewild。
  • 子域名的意外。CAA 检查会从确切的主机名向上逐级检查父域名,因此 example.com 上的一条记录会覆盖 api.example.com,除非有更具体的记录将其覆盖。请有意识地规划这一层级结构。
  • 跳过 DNSSEC。能够伪造你 DNS 的攻击者,可以在 CA 读取之前把 CAA 记录剥离掉。用 DNSSEC 对你的区域进行签名可以保护记录的完整性,让整套控制机制真正可信。

CAA 在你的域名安全体系中的位置

CAA 记录只是其中一层。它与那些保护域名本身的控制措施天然相配:注册商账户上的身份验证器应用 2FA(绝不要用短信)、防止未授权转移的注册商锁(registrar lock)、面向高价值名称的注册局锁(registry lock)、用于对你的区域签名的 DNSSEC,以及一个位于独立域名上的恢复邮箱。CAA 守护谁能为你的名称签发证书;而这些措施守护谁能转移或重新指向它。

这一切都取决于在一个有能力的地方管理 DNS。就按成本价注册而言,Porkbun(约 $11)和 Cloudflare(大致为批发价)是性价比最高的全能之选。而当你还想要一个优质、适合做品牌的名称时,Atom.com 是一个很有力的选择:这是一个经过精选的交易市场,每个在售名称都附带免费的 AI 估值、USPTO 商标查询、安全托管(escrow)以及一个专业设计的 logo——而且 Atom 还提供注册商服务,因此你可以在同一个平台上注册一个可用域名、设置名称服务器、管理转发并启用 DNSSEC。无论你是注册一个全新域名,还是收购一个适合做品牌的域名,都请在第一天就添加 CAA 记录。它只需几分钟,不花一分钱,而且永不过期。

常见问题

CAA 记录会让我的网站对访客来说更安全吗?

间接地会。CAA 是在证书签发时执行的,而不是在访客连接时,因此浏览器从不读取它。它的价值在于防止你从未批准的机构为你的域名签发证书——从而在一整类冒充攻击和流量截获攻击尚未开始之前就将其阻断。

添加 CAA 记录会破坏我现有的 SSL 证书吗?

不会。CAA 只在申请或续期新证书时才会被检查,所以你已经持有的证书会继续正常工作。唯一的风险是:如果你忘了授权一家你实际在用的 CA,将来的续期可能会失败,所以在发布记录之前,请盘点每一家机构——包括你的 CDN 和主机。

我应该在 CAA 记录中列出哪些证书颁发机构?

列出每一家为你签发证书的机构。常见的值包括 letsencrypt.org、digicert.com、sectigo.com、globalsign.com、Google 对应的 pki.goog,以及 AWS 对应的 amazon.com。查看你当前的证书以及你的主机或 CDN 服务商的文档,并把你以后可能切换过去的任何备用 CA 也包含进来。

CAA 记录能替代 DNSSEC 或注册商锁吗?

不能——它们保护的是不同的东西。CAA 控制谁可以签发证书;DNSSEC 保护你 DNS 应答的完整性,其中也包括 CAA 记录本身;注册商锁和注册局锁则阻止未授权的转移。请把它们当作层层叠加的防护一起使用,而不要把其中任何一个当成其他措施的替代品。

我在哪里添加 CAA 记录?需要花钱吗?

你在管理域名 DNS 的任何地方添加它——你的注册商或 DNS 服务商——作为一条类型为 CAA 的记录。它是免费的,只需几分钟。像 Porkbun 和 Cloudflare 这样的按成本价注册商都能很好地处理它;而当你还想要一个优质、适合做品牌的名称,并在同一个平台上获得估值、商标查询、托管和 DNS 管理时,Atom.com 是一个不错的选择。

免费课程 — 学习新技能

无需注册 · 完全免费 · 自定进度

开始交易

交易加密货币和优质域名——数字资产,真实机遇。

在 Atom 上找到你的名称

DominantBrand 从 Atom.com 精选最优质、可塑品牌的名称 — 该市场提供免费 AI 评估、USPTO 商标检查和安全托管。每个挂牌甚至附带设计好的徽标。

浏览域名