可以通过使用存储在其父母名称服务器上的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。