Node.js没有主机名验证的TLS连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js没有主机名验证的TLS连接相关的知识,希望对你有一定的参考价值。

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

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

是否有可能以某种方式禁用或解决Common Name验证?

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

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

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

答案

是否有可能以某种方式禁用或解决Common Name验证?

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

const tls = require('tls')
tls.connect({
  checkServerIdentity: () => undefined,
  ...
})

资料来源:

以上是关于Node.js没有主机名验证的TLS连接的主要内容,如果未能解决你的问题,请参考以下文章

node.js 服务器无需请求即可获取主机名

客户端网络套接字在建立安全 TLS 连接之前断开连接 Node.js v13.0.1

Node.js 主机名/IP 与证书的替代名称不匹配

SPDY - 没有 TLS?

java Java CLI应用程序的代码,用于将主机名/端口的SSL / TLS证书安装到Java的密钥库中

指向 Node.js 应用程序的多个网站,提取主机名