如何检查 DNSSEC 是否符合 nodejs?

How can I check DNSSEC compliance with nodejs?

我正在构建一些网络分析工具,但我在检查 NodeJS 应用程序中的 DNSSEC 合规性时遇到了一些困难。 None 的 DNSSEC 记录类型似乎被标准库中的 dns 模块接受。我正在尝试查找 rrsigdsnsecnsec3,但 docs 没有将它们列为要解析的有效 rrtypes。可以用 NodeJS 做到这一点吗?

除非您计划在 Javascript 中实施 DNSSEC 验证(祝您好运!)您将依赖于某些外部验证器来指示有效、无效或不安全(DNSSEC 未配置). Google Public DNS (better known as 8.8.8.8), and they conveniently have added an HTTPS-based API 中世界上最大的 DNSSEC 验证器应该很容易从您的 Node.js 代码中使用(API 响应是 JSON)。

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

  • 两个查询的 SERVFAIL ("Status": 2) 都是错误的委托
  • SERVFAIL only without &cd=1 是无效的 DNSSEC 配置
  • 成功("Status":0)但没有经过身份验证的数据("AD":false)是非 DNSSEC 区域
  • SUCCESS with Authenticated Data ("AD": true) 是一个有效的 DNSSEC 配置

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

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