如何验证根DNS信任锚



我正在尝试根据从这里下载的信任锚点(Kjqmt7v.crt)验证根密钥签名密钥(KSK)。我正在使用Net::DNS模块获取根KSK。

我目前很困惑如何验证两者是否相同。我试图将.crt文件转换为Keyset对象,但这导致了一个错误。

这是我的密码。

#!/usr/bin/perl
use strict;
use warnings; 
use Net::DNS::Keyset;
my $keyset = Net::DNS::Keyset->new('Kjqmt7v.crt');
$keyset->print;

这是错误

 We expected a match RDATA
0��0���0   *�H��  0K10 U 
this Should not happen
 at a.pl line 5

我很困惑,因此无法提供任何合适的代码,因为我不知道如何开始。给我指一个正确的方向会很有帮助。

我想要一种方法来验证信任锚相对于我从根DNS服务器获得的KSK。如果有任何其他方法可以做到这一点,请更新我。

您似乎误解了IANA提供的文件中的内容。除了公共根密钥本身之外,它们都不是DNSSEC数据。例如,Kjqmt7v.crt文件是DER格式的X.509证书(所以Net::DNS::Keyset阻塞它也就不足为奇了)。如果您查看它(例如使用openssl x509命令),您可以看到它的DN字段中包含根KSK的DS记录的文本表示。因此,如果你验证了该证书,你就知道DS是正版的,你可以用它来验证DNSKEY。

在同一个URL中,另一种可能对大多数人更容易使用的替代方案是XML格式的KSK的DS,带有分离的PGP签名。验证签名,使用XML文件中的数据以您喜欢的编程语言构建正确的DS记录,然后您可以使用它来验证KSK-DNSKEY记录。

相关内容

  • 没有找到相关文章

最新更新