1

我正在尝试针对从此处Kjqmt7v.crt下载的信任锚 ()验证根密钥签名密钥 (KSK) 。我正在使用该模块获取 root KSK。Net::DNS

我目前对如何验证两者是否相同感到非常困惑。我试图将.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 的信任锚。如果有任何其他方法可以做到这一点,请更新我。

4

1 回答 1

1

您似乎误解了 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 记录。

于 2016-04-09T06:34:48.407 回答