Node.js https密钥和证书

时间:2018-08-30 09:14:35

标签: node.js https

嗨,
我尝试使用windows的openssl创建一个pem密钥和csr:

测试1

OpenSSL> req -x509 -newkey rsa:2048 -keyout key_localhost.pem -out cert_localhost.pem -days 365

这创建了两个文件名key_localhost.pemcert_localhost.pem。我将两个文件都粘贴到了server.js文件的同一级别。但是我的浏览器遇到了安全问题。

在浏览器上显示:

The certificate is not safe because it is self-signed.
The most valid certificate only for. 
Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT

这是我的server.js

https.createServer({
    key: fs.readFileSync('key_localhost1.pem'),
    cert: fs.readFileSync('cert_localhost1.pem'),
    passphrase: 'localhost',
  }, app).listen(8080);

测试2

我尝试了另一件事:

openssl> req -newkey rsa:2048 -new -nodes -keyout key.pem -out key_localhost2.pem
openssl> x509 -req -days 365 -in key_localhost2.pem -signkey key.pem -out cert_localhost2.crt

这创建了三个文件名key_localhost.pemcert_localhost.pemkey.pem。但是我的浏览器没有任何变化...

这是我的server.js

https.createServer({
    key: fs.readFileSync('key.pem'),
    cert: fs.readFileSync('cert_localhost2.crt'),
    passphrase: 'localhost',
  }, app).listen(8080);

任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:0)

该错误告诉您问题所在:您正在使用的自签名证书被视为存在安全风险。受信任的(由浏览器)CA(证书颁发机构)需要先对您的密钥进行签名,然后浏览器才会认为它们是安全的。 Let's Encrypt是这样一种CA。

有一个名为auto-sni的模块,可以自动从“加密”中请求证书。我本人从未使用过此模块,所以不知道它的工作原理。

答案 1 :(得分:-1)