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 - 错误:无法验证第一个证书的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node-RED 处理 MQTT 数据

基于Linux创建简单的Node-RED节点

使用 Node-RED 处理 MQTT 数据

Node-red 如何将 Pattern 与 amqp 库和变量一起使用

使用nodemailer发送邮件

node-red实现MQTT通讯