如何检查DNSSEC是否符合nodejs?

时间:2016-07-11 12:41:04

标签: javascript node.js dns dnssec

我正在构建一些网络分析工具,但我在NodeJS应用程序中检查DNSSEC合规性时遇到了一些困难。标准库中的dns模块似乎没有接受任何DNSSEC记录类型。我正在尝试查找rrsigdsnsecnsec3,但docs不会将它们列为要解析的有效rrtype。是否可以使用NodeJS执行此操作?

1 个答案:

答案 0 :(得分:2)

除非您计划在Javascript中实施DNSSEC验证(祝您好运!)您将依赖某些外部验证器来指示有效,无效或不安全(DNSSEC未配置)。世界上最大的DNSSEC验证器Google Public DNS(更好地称为8.8.8.8),它们方便地添加了一个HTTPS-based API,它应该很容易从您的Node.js代码中使用(API响应)是JSON)。

您可以使用和不使用& cd = 1参数检查是否成功解析,以禁用DNSSEC验证:

  • 两个查询的SERVFAIL("状态":2)是一个错误的委托
  • 只有没有& cd = 1的SERVFAIL是无效的DNSSEC配置
  • 成功("状态":0)但没有经过身份验证的数据(" AD":false)是非DNSSEC区域
  • 使用经过身份验证的数据的成功(" AD":true)是有效的DNSSEC配置

唯一的缺点是这些是远程Web API调用,但即使使用本地验证解析器,您依赖于远程DNS查询,因此没有那么大的区别(缓存除外)。

如果要生成有关无效DNSSEC配置的特定问题的诊断信息,则需要直接查询特定于DNSSEC的记录类型(这适用于DS,DNSKEY,NSEC,NSEC3,NSEC3PARAM和RRSIG - 但你必须自己使用NSEC3PARAM数据生成NSEC3哈希名称,这将是痛苦的)