跳转到内容
搜索文档

简介

最后更新 查看 MarkdownAgent 设置

多方签名 DNSSEC 包含两种模型,允许不同的权威 DNS 提供商同时为同一 zone 提供服务并启用 DNSSEC。

这意味着与需要在查询时对 DNS 记录进行实时签名(live-signing)的 DNS 功能有更好的兼容性,也使你能够在不禁用 DNSSEC 的情况下将 zone 迁移到 Cloudflare

你可以使用 RFC 8901 中描述的任一模型来设置多方签名 DNSSEC

工作原理

多方签名 DNSSEC 关注 DNSSEC 验证所需的信任链,并利用它来保证即使涉及多个提供商,验证也能完成。

否则验证可能出问题的一个示例情况是:解析器已缓存某个提供商的 DNSKEY 记录集,却收到由另一个提供商签名的响应。

为避免此类问题,设置多方签名 DNSSEC 时,你需要调整:

  1. 各 DNS 提供商在其 DNSKEY 记录集中拥有的区域签名密钥(ZSK)。
  2. 谁负责安全入口点(SEP)、密钥签名密钥(KSK)以及委派签名者(DS)记录。

当这些配置以如下方式调整后——(a) 所有相关提供商都拥有彼此的公钥区域签名密钥(ZSK),且 (b) 委派签名者(DS)记录引用必要的密钥签名密钥(KSK)——多个提供商对 zone 进行实时签名就不再是问题。

模型 1

在两种模型中,所有提供商都会将彼此的区域签名密钥(ZSK)添加到其 DNSKEY 记录集中;而在模型 1 中,仅使用一个密钥签名密钥(KSK)来签名这些 DNSKEY 记录集。该 KSK 的管理及其由 DS 记录(即安全入口点)的引用,由 zone 所有者或仅由一个提供商(由 zone 所有者指定)负责。

模型 2

另一方面,在模型 2 中,每个提供商使用自己的 KSK 签名自己的 DNSKEY 记录集,然后这些 KSK 由 DS 记录(安全入口点)引用。


启用多方签名 DNSSEC 后会发生什么

在 Cloudflare 上开启多方签名 DNSSEC 时,会发生以下变化:

  1. 内部标志:Cloudflare 设置一个内部标志,允许你向 zone 添加 DNSKEY 记录。
  2. 包含外部 ZSK:当你添加来自辅助提供商的 DNSKEY 记录时,Cloudflare 会将它们包含在 DNSKEY RRset 中。
  3. 使用 Cloudflare 的 KSK 签名:Cloudflare 使用 Cloudflare 的 KSK 签名外部 ZSK,从而创建多方签名 DNSSEC 模型 2 RRset。
  4. 生成 CDS/CDNSKEY:若你添加其他提供商的 KSK(非必需但建议),Cloudflare 会生成 CDS/CDNSKEY RRset,以便与验证工具兼容。

此配置可确保解析器能够验证来自任一提供商的响应,因为所有 ZSK DNSKEY 均由 DS 记录中引用的相应 KSK 签名。


最佳实践

设置多方签名 DNSSEC 时,请遵循以下最佳实践,以帮助顺利部署。

使用模型 2

Cloudflare 建议多方签名设置使用模型 2。在此模型中,每个提供商都有自己的 KSK DNSKEY,从而产生两条 DS 记录(每个提供商一条)。这可提供更好的独立性与灵活性。

理解 DNSKEY 标志

  • ZSK(区域签名密钥):标志 256
  • KSK(密钥签名密钥):标志 257

在提供商之间交换密钥时,请确保向 DNSKEY RRset 添加正确的密钥类型(通常为 ZSK)。

遵守 TTL

在对 DNSKEY 与 DS 记录进行更改后,请始终等待 TTL 时长再进行下一步。这可确保缓存记录在新记录生效前过期,从而防止验证失败。

验证提供商兼容性

并非所有 DNS 提供商都支持将外部 DNSKEY 添加到其 DNSKEY RRset。在开始多方签名迁移之前:

  • 确认你的其他提供商支持多方签名 DNSSEC。
  • 确认他们可以将 Cloudflare 的 ZSK 添加到其 DNSKEY 记录中。
  • 如有可能,在非生产环境中测试该配置。

部分第三方提供商可能不支持所需功能。

充分测试

多方签名 DNSSEC 涉及在多个提供商之间协调加密密钥。在部署到生产环境之前:

  1. 验证双方提供商的 DNSKEY RRset 中都包含彼此的 ZSK。
  2. 确认注册商处存在两条 DS 记录。
  3. 使用 DNSSEC 验证工具测试来自双方提供商的解析。
  4. 在过渡期间监控验证错误。

这篇文档对您有帮助吗?