我需要用CA签名的证书来保护我的Node Red,而不是自签名证书。我使用的是带有AmazonLinux的AmazonEC2。
我自己解决了这个问题。
要使其正常工作,您需要一个红色节点的域名。
我用COMODO获取SSL
获取CERT
- ssh进入服务器,然后转到安装node red的主目录,运行这些命令:
-
mkdir sslcerts
-
cd sslcerts
-
openssl genrsa-out/private.key 2048
-
openssl req-new-sha256-key/private.key-out/{您的域名}.csr
- 在COMODO SSL过程中,您需要了解上面创建的.csr文件的内容
- 遵循COMODOs SSL请求程序
- 一旦颁发证书,您将获得一个Certificates.zip文件。将其解压缩到另一个目录中
- 在解压缩的目录中,使用文本编辑器或Linux命令行创建一个ca捆绑文件
- 按以下顺序组合文件(我在这里使用Linux命令"cat"):
$cat COMODARSAAddTrustCA.crt COMODARSADomainValidationSecureServerCA.crtAddTrustExternalCARoot.crt>{yourdomainname}.ca bundle。您需要将刚才创建的ca bundle文件和{yourdomainname}.crt文件复制到服务器上的sslcerts
使证书可由Node Red使用
- cd到安装node red的主目录,然后cd到(隐藏).node red目录
-
nano-settings.js
- 在该文件的顶部,取消对以下行的注释:var fs=require("fs")
- 查找并取消注释https:{key:…}
- 将内容更改为:
https:{ca:fs.readFileSync('slcerts/{yourdomainname}.ca bundle'),key:fs.readFile同步('slcert/private.key'),cert:fs.read文件同步('slcorts/{yourdomainname}.crt')}
- 保存此文件(CTRL-O),然后退出(CTRL-X)
- 重新启动红色节点并检查是否有任何启动错误。如果出现错误,则很可能在"https:{…"中拼写错误
若要将SSL证书添加到Node Red,请将https密钥添加到settings。js:
...
},
https: {
key: fs.readFileSync('privkey.pem'),
cert: fs.readFileSync('cert.pem')
},
...
如果您询问如何获得CA签名的证书,您可以选择许多途径。查看Lets Encrypt以获得免费的自动化解决方案。