Node.JS 错误 - process.env.NODE_TLS_REJECT_UNAUTHORIZED。这是啥意思?

Posted

技术标签:

【中文标题】Node.JS 错误 - process.env.NODE_TLS_REJECT_UNAUTHORIZED。这是啥意思?【英文标题】:Node.JS Error- process.env.NODE_TLS_REJECT_UNAUTHORIZED. What does this mean?Node.JS 错误 - process.env.NODE_TLS_REJECT_UNAUTHORIZED。这是什么意思? 【发布时间】:2016-06-08 14:42:16 【问题描述】:

我是后端开发的新手。我真的很喜欢在 node.js 中编写代码。但是,我似乎无法掌握的东西很少。我不断收到以下错误:

错误:DEPTH_ZERO_SELF_SIGNED_CERT

我通过实现以下代码修复了它:

if ('development' == app.get('env')) 
    console.log("Rejecting node tls");
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

我知道我们正在设置环境。但是,这在简单的语言中意味着什么?我不知道如何向别人解释。有很多 onof 信息,如何解决它,但我找不到任何关于这实际上是什么意思的信息。

谁能解释一下?

【问题讨论】:

【参考方案1】:

节点抱怨是因为它获得的 TLS (SSL) 证书是自签名的(即它没有父级 - 深度为 0)。它希望找到由安装在您的操作系统中的另一个证书签名的证书作为受信任的根。

您的“修复”是通过允许任何未经授权的证书来禁止 Node 拒绝自签名证书。

你的修复是不安全的,根本不应该做,但经常在开发中完成(它永远不应该在生产中完成)。

正确的解决方案应该是将自签名证书放在受信任的根存储中,或者获取由现有证书颁发机构(已被您的服务器信任)签名的适当证书。

另外一点,您的日志记录应显示为“禁用节点拒绝无效/未经授权的证书”

【讨论】:

非常感谢您分享这个。 @Philip Whitehouse 这是否意味着客户端和服务器之间的通信仍然是加密的,但是从 TLS 的角度来看它是不安全的,因为证书无效? @crazyX 已加密。但这意味着你不能真正相信你在和谁说话。这可能意味着连接可以是中间人。

以上是关于Node.JS 错误 - process.env.NODE_TLS_REJECT_UNAUTHORIZED。这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 node.js 中存根 process.env?

Node.js OpenShift EACCESS 错误

如何更改 node.js 中 process.env.PORT 的值?

process.env.NODE_ENV和env在webpack中的使用

如何使用 Amazon EC2 实例为生产设置 node.js process.env 变量?

在 AWS Elastic Beanstalk 下设置 node.js process.env 变量