Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js TLS究竟是什么';拒绝未经授权的';对我来说是什么意思?_Node.js_Ssl - Fatal编程技术网

Node.js TLS究竟是什么';拒绝未经授权的';对我来说是什么意思?

Node.js TLS究竟是什么';拒绝未经授权的';对我来说是什么意思?,node.js,ssl,Node.js,Ssl,因此,今天早些时候我遇到了一个问题,我的客户机在节点中编写,因为我连接到的服务器使用了自签名证书,所以出现了呕吐。因此,我去添加了选项rejectUnauthorized:false到我的tls.connect命令,就像任何不知情的开发人员一样 我现在的问题是,这对我意味着什么?我的TLS连接只是一个普通的TCP连接,也可能是TLS连接吗?将其作为TLS流编写是否完全无用 更重要的是,那个服务器,你知道那个有自签名证书的吗?此处和此处之间的我的流是否已加密?如中所述: rejectUnauth

因此,今天早些时候我遇到了一个问题,我的客户机在
节点中编写,因为我连接到的服务器使用了自签名证书,所以出现了呕吐。因此,我去添加了选项
rejectUnauthorized:false
到我的
tls.connect
命令,就像任何不知情的开发人员一样

我现在的问题是,这对我意味着什么?我的TLS连接只是一个普通的TCP连接,也可能是TLS连接吗?将其作为TLS流编写是否完全无用

更重要的是,那个服务器,你知道那个有自签名证书的吗?此处和此处之间的我的流是否已加密?

如中所述:

  • rejectUnauthorized
    :如果
    true
    ,则根据提供的CA列表验证服务器证书。如果验证失败,则发出
    错误
    事件<代码>错误。代码
    包含OpenSSL错误代码。默认值:
    true
由于您使用的是自签名证书,显然与内置CA不匹配,因此默认情况下,连接将被拒绝,因为它无法验证服务器是他们所说的服务器

通过设置
rejectUnauthorized:false
,您的意思是“我不在乎是否无法验证服务器的身份”。显然,这不是一个好的解决方案,因为它使您容易受到MITM攻击

对于自签名证书,更好的解决方案是在连接客户端时将适当的
ca
值设置为自定义ca。另外,确保您的
主机
值与服务器自签名证书的通用名称的值匹配。例如:

var socket = tls.connect({
  host: 'MyTLSServer',
  port: 1337,
  ca: [ fs.readFileSync('CA.pem') ],
}, function() {
  // Connected!
});

// ...

无论您使用
rejectUnauthorized:false
还是设置
ca
,连接都是加密的。

节点抛出错误:“链中自签名证书”。有没有更好的方法来解决这个问题?主机/CN可能是IP地址吗?我使用“NODE\u TLS\u REJECT\u UNAUTHORIZED=0”标志处理它。这不是正确的方法,而是为开发环境工作