我正在努力做一些非常基本的工作而且它不适合我。我有一个简单的Node-RED流,带有一个注入输入节点和一个电子邮件输出节点:
电子邮件节点的属性如下所示:
错误说:
" 7/28/2017,11:43:28 AM节点:fname.lname@company.com msg:错误 "错误:无法验证第一个证书"
我可以通过telnet手动通过此服务器发送未经身份验证的电子邮件。即使我输入帐户信用卡,它也会给我相同的信息"错误:无法验证第一个证书"。
我错过了一些简单的东西吗?
答案 0 :(得分:11)
我没有足够的声誉来撰写评论,但我为前一个回复添加了这一行,有人可能需要它,
要在Node.js程序中绕过此错误,请键入:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
答案 1 :(得分:4)
问题是您要连接的邮件服务器正在使用SSL,并且它所提供的证书未由您正在使用的Node.JS实现中内置的可信CA之一签名。
我猜它是一张自签名证书。
错误说Node.JS无法验证所呈现链中的第一个证书。
我最好的猜测是,Nodemailer(在电子邮件节点的封面下使用)在发送STARTTLS
命令时会看到列出的EHLO
选项,因为它启动了与邮件服务器的连接并且正在尝试将连接升级为安全连接。
虽然我通常不推荐这样做,但您可以在启动Node-RED之前导出以下环境变量来关闭Node.JS的证书检查:
NODE_TLS_REJECT_UNAUTHORIZED=0
这会关闭所有证书检查,因此对于由Node-RED进行的任何TLS / SSL连接,您都可以在中间攻击中使用。
这里真正的解决方案是为邮件服务器获取一个合适的证书,也许来自letsencrypt项目,特别是如果这个邮件服务器以任何方式面向互联网。