可以通过使用存储在其父母名称服务器上的DS来验证名称服务器上的DNSKEY。根据RFC4034:
DS记录通过包含DNSKEY RR的摘要来引用DNSKEY RR
DNSKEY RR。

摘要是通过将规范形式的
具有DNSKEY RDATA的DNSKEY RR的标准所有者名称,
然后应用摘要算法。

 digest = digest_algorithm( DNSKEY owner name | DNSKEY RDATA);

  "|" denotes concatenation

 DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key.


以下示例显示了DNSKEY RR及其对应的DS RR。

   dskey.example.com. 86400 IN DNSKEY 256 3 5 ( AQOeiiR0GOMYkDshWoSKz9Xz
                                         fwJr1AYtsmx3TGkJaNXVbfi/
                                         2pHm822aJ5iI9BMzNXxeYCmZ
                                         DRD99WYwYqUSdjMmmAphXdvx
                                         egXd/M5+X7OrzKBaMbCVdFLU
                                         Uh6DhweJBjEVv5f2wwjM9Xzc
                                         nOf+EPbtG9DMBmADjFDc2w/r
                                         ljwvFw==
                                         ) ;  key id = 60485
   dskey.example.com. 86400 IN DS 60485 5 1 ( 2BB183AF5F22588179A53B0A
                                          98631FAD1A292118 )


谁能向我解释如何基于DNSKEY生成DS?我的具体问题是如何连接并生成“ DNSKEY RDATA”?
提前致谢。

最佳答案

根据有关此page的信息:

实际上,摘要是根据以下字段计算得出的,
级联:
DNSKEY所有者名称:se。 (0x 02736500)
标志:257(0x0101)
协议:3
(0x03)算法:5(0x05)公钥:Aw……
前四个字段(以十六进制表示)如下:02736500 0101 03 05,

我的问题是如何计算DNSKEY域名的值(在本例中为se)。我不知道的概念是“有线格式”。幸运的是,来自英国Nominet的Roy Arends向我清楚地解释了这是什么:

域名以“ wireformat”为一组标签,其中每个标签前面都有一个长度值,并以空标签结尾(值0x00)
为了“ se”。连线格式为:02(“ se”的长度),然后是73 65(“ s”和“ e”的ascii值的十六进制表示,后跟空标签(值00):0x 02 73 65 00
对于根(“。”),值仅为00,因此它将为0x00
“ dnssec-tools”的长度为12个字符,因此长度值为:0c然后
dnssec-tools以十六进制表示的ascii表示形式:64 6e 73 73 65 63 2d
74 6f 6f 6c 73“ org”的长度为3个字符,因此长度值为:03
然后以十六进制表示org的ascii表示形式:6f 72 67,然后是
空标签:00
总而言之:“ dnssec-tools.org”。是
0x0c646e737365632d746f6f6c73036f726700

感谢Agian Roy。

09-25 19:22