如何验证根 DNS 信任锚?
How do I verify a root DNS trust anchor?
我正在尝试根据从 here 下载的信任锚 (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 提供的文件中的内容。其中 None 除了 public 根密钥本身实际上是 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 记录。
我正在尝试根据从 here 下载的信任锚 (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 提供的文件中的内容。其中 None 除了 public 根密钥本身实际上是 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 记录。