Node-RED 和 nodemailer - 错误:无法验证第一个证书
Posted
技术标签:
【中文标题】Node-RED 和 nodemailer - 错误:无法验证第一个证书【英文标题】:Node-RED and nodemailer - Error: unable to verify the first certificate 【发布时间】:2017-07-28 18:58:55 【问题描述】:我正在尝试做一些非常基本的工作,但它对我不起作用。我有一个简单的 Node-RED 流程,其中包含一个注入输入节点和一个电子邮件输出节点:
电子邮件节点的属性如下所示:
错误提示:
“2017 年 7 月 28 日上午 11:43:28 节点:fname.lname@company.com 味精:错误 “错误:无法验证第一个证书”
我可以通过 telnet 通过此服务器手动发送未经身份验证的电子邮件。即使我输入帐户凭据,它也会给我相同的“错误:无法验证第一个证书”。
我错过了一些简单的东西吗?
【问题讨论】:
【参考方案1】:我没有足够的声誉来写评论,但是我在上一个回复中添加了这一行,可能有人需要它,
要绕过 Node.js 程序中的此错误,请键入:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
【讨论】:
【参考方案2】:问题是您要连接的邮件服务器使用 SSL,并且它提供的证书未由您正在使用的 Node.JS 实现中内置的受信任 CA 之一签名。
我猜这是一个自签名证书。
错误表示 Node.JS 无法验证提供的链中的第一个证书。
我最好的猜测是 Nodemailer(它在电子邮件节点的幕后使用)在启动与邮件服务器的连接并尝试将连接升级到安全的连接。
虽然我通常不建议这样做,但您可以通过在启动 Node-RED 之前导出以下环境变量来关闭 Node.JS 的证书检查:
NODE_TLS_REJECT_UNAUTHORIZED=0
这会关闭所有证书检查,因此对于从 Node-RED 建立的任何 TLS/SSL 连接,您都会受到中间人攻击。
这里真正的解决方案是为邮件服务器获取适当的证书,可能来自letsencrypt项目,特别是如果该邮件服务器以任何方式面向互联网。
【讨论】:
以上是关于Node-RED 和 nodemailer - 错误:无法验证第一个证书的主要内容,如果未能解决你的问题,请参考以下文章