2016-02-25 441 views
6

我是新来的后端开发。我非常喜欢在节点中编写代码。但是,我似乎无法掌握的东西很少。我一直得到以下错误:Node.JS Error- process.env.NODE_TLS_REJECT_UNAUTHORIZED。这是什么意思?

Error: DEPTH_ZERO_SELF_SIGNED_CERT

我通过执行以下代码固定它:

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

我明白我们设置的环境。但是,这在通俗的语言中意味着什么?我不知道如何解释给别人。有很多onof信息,如何解决它,但我无法找到什么,这实际上是什么的意思是

有人可以解释一下吗?

回答

9

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

您的“修复”是通过允许ANY未经授权的证书禁止节点拒绝自签名证书。

您的修补程序是不安全的,根本不应该完成,但通常在开发中完成(它不应该在生产中完成)。

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

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

+0

非常感谢您分享此内容。 –

+0

有用的解释,谢谢! –