Node-Red:如何忽略来自http请求节点的SSL错误

时间:2015-04-30 17:04:01

标签: node-red

我正在尝试使用node-red作为前端来与我正在构建的REST API进行交互。我的API使用https,但在我的本地服务器上,证书没有完美设置,当我尝试使用“http请求”节点时,我收到错误:

 UNABLE_TO_VERIFY_LEAF_SIGNATURE

有没有办法将node-red配置为不太严格并允许SSL协议错误并继续处理http请求?有没有人创建自己的“http请求”节点版本,其严格程度不如默认版本?

(在Google Chome浏览器中,我有一个绿色挂锁,因此SSL几乎正确,节点红色非常挑剔)

要运行node-red,我使用docker:

docker run -dp 1880:1880 -v ~/.node-red:/root/.node-red --name node-red cpswan/node-red

这是我的节点红色项目源代码:

[{"id":"e246fcb9.1db9","type":"inject","name":"Trigger user/me","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":200,"y":140,"z":"e7bac913.184538","wires":[["f9d78108.06288"]]},{"id":"96b8b92c.694748","type":"http request","name":"user/me","method":"GET","ret":"obj","url":"https://local.supertasker.com/api/user/me","x":711,"y":141,"z":"e7bac913.184538","wires":[["5150419b.aeafc"]]},{"id":"5150419b.aeafc","type":"debug","name":"","active":true,"console":"false","complete":"false","x":906,"y":140,"z":"e7bac913.184538","wires":[]},{"id":"f9d78108.06288","type":"function","name":"Add 'Accept:application/json' header","func":"\nmsg.headers = {\n    'Accept':'application/json'\n};\n\n// Return the message so it can be sent on\nreturn msg;","outputs":1,"valid":true,"x":464,"y":140,"z":"e7bac913.184538","wires":[["96b8b92c.694748"]]}]

4 个答案:

答案 0 :(得分:3)

目前,node-red没有公开直接执行此操作的方法,但您可以设置NODE_TLS_REJECT_UNAUTHORIZED环境变量以在node.js级别禁用它:

例如:

NODE_TLS_REJECT_UNAUTHORIZED=0 node red.js

答案 1 :(得分:1)

settings.js文件中添加以下代码。在module.exports行之前

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

如果要查找文件位置,请在节点上运行红色,并显示文件位置。

答案 2 :(得分:0)

如果它对任何人都有帮助,以下是使用{var> {strong}使用{var 3>} Docker {{1}的ENV var,使用brought to light 无HTTPS错误尝试节点红色的方法}}):

使用此内容创建NODE_TLS_REJECT_UNAUTHORIZED=0

Dockerfile

构建它:

FROM node:0.10
RUN npm install -g node-red
EXPOSE 1880
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
CMD ["/usr/local/bin/node-red"]

运行它:

docker build -t="yourname/node-red" .

浏览至:http://127.0.0.1:1880/

如果您需要node-red app来访问主机上运行的服务,您可以将该服务的名称添加到引用docker gateway IP的node-red容器的docker run -dp 1880:1880 -v ~/.node-red:/root/.node-red --name node-red yourname/node-red

/etc/hosts

此后,节点红色" http请求"节点可以在网址中使用docker exec node-red sh -c "echo '172.17.42.1\tmy.local.service.com\n' >> /etc/hosts"

答案 3 :(得分:0)

我在 ubuntu 20.04 LTS 上使用 snapd 安装了 node-red

如果有人在 ubuntu 上使用这个工具有同样的问题,请看:

<块引用>

/etc/systemd/system/snap.node-red.node-red.service

node-red service definition

您会发现应用正在使用 /etc/environment 文件来设置环境变量

更新

EnvironmentFile=...改为Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"

之后,使用以下命令重新启动 systemd 和 snap.node-red 服务:

sudo systemctl daemon-reload && service snap.node-red.node-red restart
<块引用>

确保服务正在运行:

sudo service snap.node-red.node-red status

node-red service

请求应该正常通过 Node red HTTPs request working example