NODE-RED默认不需要认证登陆,当内网服务开放了外网端口后,有一定的安全风险,此操作可以规避一部分。首先看看效果:
访问NODE-RED页面的时候会要求登录,并且通过HTTPS访问。
实现步骤:
1、用户名密码登陆
修改NODE-RED容器配置文件夹中的settings.js:
adminAuth: {
type: "credentials",
users: {
username: "三木",
password: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
permissions: "*"
}]
}
找到上面行,取消前面的注释,修改username和password的内容,
其中password经过了编码,具体方法为:
进入容器命令行环境,其中的Node-Red为容器名字,根据自己的情况修改
docker exec -it Node-Red /bin/bash
执行命令
node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" password_here
password_here即输入你的密码,注意前面有个空格,然后回车
会自动显示编码后的密码,复制内容到上面的password里,保存,重启NODE-RED容器。
2、增加SSL证书
修改NODE-RED容器配置文件夹中的settings.js:
var fs = require("fs");
https: {
key: fs.readFileSync('/data/XXX.key'),
cert: fs.readFileSync('/data/XXX.pem')
},
requireHttps: true,
总共修改3处地方,将SSL证书的key和pem文件复制到settings.js所在文件夹,重启容器