我正在构建一些Web分析工具,但是在检查NodeJS应用程序中的DNSSEC合规性时遇到了一些困难。标准库中的dns
模块似乎未接受任何DNSSEC记录类型。我正在尝试查找rrsig
,ds
,nsec
,nsec3
,但是docs并未将它们列为要解决的有效rrtype。使用NodeJS可以做到这一点吗?
最佳答案
除非您打算用Javascript实现DNSSEC验证(祝您好运!),否则您将依赖某些外部验证器来指示有效,无效或不安全(未配置DNSSEC)。 Google Public DNS中世界上最大的DNSSEC验证器(更好地称为8.8.8.8),他们方便地添加了一个HTTPS-based API,它应该很容易从Node.js代码中使用(API响应是JSON)。
您可以使用&cd = 1参数来检查是否成功解析,以禁用DNSSEC验证:
两个查询的SERVFAIL(“状态”:2)都是错误的委派
仅不带&cd = 1的SERVFAIL是无效的DNSSEC配置
成功(“状态”:0)但没有经过身份验证的数据(“ AD”:假)不是非DNSSEC区域
具有验证数据的成功(“ AD”:true)是有效的DNSSEC配置
唯一的缺点是这些是远程Web API调用,但是即使使用本地验证解析器,您也依赖于远程DNS查询,因此没有太大区别(除了缓存)。
如果要使用无效的DNSSEC配置生成有关特定问题的诊断,则需要直接查询特定于DNSSEC的记录类型(这适用于DS,DNSKEY,NSEC,NSEC3,NSEC3PARAM和RRSIG-但您必须自己使用NSEC3PARAM数据生成NSEC3哈希名称,这会很麻烦)