无需主机名验证的 Node.js TLS 连接

Tho*_*sen 2 ssl ssl-certificate node.js

我正在玩一群相互连接的“节点”,我真正关心的是它们彼此安全连接并且都经过身份验证。

为此,我认为 TLS 模块非常适合。我创建了一个 CA 并签署了一堆证书,每个节点一个。然后我遇到了一个问题,即现在针对节点连接的主机验证证书。

是否可以以某种方式禁用或解决通用名称验证?

这个设置有什么根本性的缺陷吗?

我是否正确,只要这些证书由我的 CA 签名,连接就应该是安全的,并且我确定只有我的节点可以连接?

必须签署锁定到主机名或 IP(或多个接口的情况下的多个)的证书似乎只是一种烦恼。我了解到验证主机的要求实际上不是 TLS 的一部分,而是 HTTPS - 从这个角度来看,默认情况下这样做可能是 Node.js 的错误?

Tho*_*sen 5

是否可以以某种方式禁用或解决通用名称验证?

这可以通过将 的checkServerIdentity选项设置tls.connect为无操作函数来实现:

const tls = require('tls')
tls.connect({
  checkServerIdentity: () => undefined,
  ...
})
Run Code Online (Sandbox Code Playgroud)

资料来源: