3

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

摘要是通过将 DNSKEY RR 的完全限定所有者名称的规范形式与 DNSKEY RDATA 连接起来,然后应用摘要算法来计算的。

 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”?提前致谢。

4

1 回答 1

3

根据此页面上的信息:

实际上,摘要是在以下字段上计算的,连接起来:

DNSKEY 所有者名称:se。(0x 02736500) 标志:257 (0x0101) 协议:3 (0x03) 算法:5 (0x05) 公钥:Aw……</p>

前四个字段,十六进制如下: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

谢谢阿吉安罗伊。

于 2013-03-21T13:40:08.233 回答