首页/网络/协议速查/DNSKEY 记录(区域公钥)
DNS 与域名解析60 条

DNSKEY 记录(区域公钥)

DNSSEC 的区域公钥:KSK(密钥签名密钥,257)用于签 DS/DNSKEY,ZSK(区域签名密钥,256)用于签普通记录。

协议速查网络更新于 2026-10-13

DNSKEY 是什么

DNSKEY(TYPE 48)是 DNSSEC 的区域公钥记录,同一区域内通常承担两种角色:KSK(密钥签名密钥,flags 为 257)用来签 DNSKEY 集合本身,其摘要作为 DS 记录提交给父区;ZSK(区域签名密钥,flags 为 256)用来签普通记录集。两者配合,构成「父区信任子区、子区自证记录」的验证链条(RFC 4034 §2)。

基本信息

类型DNSKEY(TYPE 48)
字段flags、protocol(固定为 3)、algorithm、公钥
flags 取值256 表示 ZSK,257 表示 KSK
常见算法13 为 ECDSAP256SHA256、8 为 RSASHA256、15 为 ED25519
规范RFC 4034 §2
配套父区 DS 记录由 KSK 的公钥摘要生成

典型使用场景

  • 启用 DNSSEC 后核对区域密钥与注册商侧的 DS 是否匹配
  • 密钥轮换流程:预发布、双签、切换、撤销四步不能跳
  • 排障:验证失败时确认链上密钥版本与摘要是否一致
  • 托管选型:判断服务商是否支持自动轮换与自动重签
  • 安全加固:淘汰弱算法与过短的密钥长度
  • 审计:确认区域密钥数量与角色划分是否合理

查看密钥与生成 DS

查看密钥与生成 DS
# 查看区域公钥(flags 用来区分 KSK 与 ZSK)
dig +short example.com DNSKEY
# 257 3 13 <KSK 公钥 base64>   ← 257 = KSK,用于签 DNSKEY 集合
# 256 3 13 <ZSK 公钥 base64>   ← 256 = ZSK,用于签普通记录集

# 由 KSK 生成 DS(提交给注册商),以 BIND 附带工具为例
dnssec-dsfromkey -2 Kexample.com.+013+2371.key

两个密钥的分工

密钥flags用途
KSK257签 DNSKEY 集合,其摘要作为 DS 提交父区
ZSK256签普通记录集,可以更频繁地轮换
算法编号13 或 8 或 15 等新旧算法切换需要双签过渡
DS父区记录由 KSK 摘要生成,必须与注册商配置一致
密钥轮换有固定顺序(预发布、双签、切换、撤销),顺序错误会造成瞬时验证失败;小站交给支持自动轮换的托管 DNS 更省事。
只在本地完成签名却没有在注册商提交 DS,等于「孤岛签名」——所有验证解析器都会判为不安全,常见表现是解析返回 SERVFAIL。
RSA 密钥长度不足(如 1024 位)或仍使用 RSASHA1 这类弱算法,会被部分解析器直接拒绝验证。
验证失败时,先在权威侧用 dig +dnssec 直查 DNSKEY,再与注册商侧的 DS 摘要对比,能最快判断问题出在子区、父区还是缓存解析器上。

易错点

  • 启用 DNSSEC 后忘记在注册商提交 DS,全网验证解析器都会拒绝该域
  • KSK 轮换时直接替换 DS,会留下无法验证的窗口期
  • 用 1024 位 RSA 或过时算法签名,会被部分解析器按弱算法拒绝
  • 把 KSK 与 ZSK 的角色搞混(例如用 ZSK 的摘要去提交 DS),验证链会直接断掉

数据来源与参考

  • RFC 4034 §2 DNSKEY
  • RFC 6781(DNSSEC 运维实践)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌