2016-09-20 119 views
1

我对如何在我的节点服务器上配置SSL感到大量困惑!在node/express上安装RapidSSL证书

我做了什么做多远:

- 创建一个自签名测试本地

- 增加了此代码,以我的快递成立

var privateKey = fs.readFileSync('privatekey.pem', 'utf8'); 
var certificate = fs.readFileSync('certificate.pem', 'utf8'); 
https.createServer({ 
    key: privateKey, 
    cert: certificate 
}, app).listen(port); 
密钥和证书我的本地机器上

这是很好的地方(我得到浏览器错误,但我明白,这是因为我自签名,我不是一个可信的权威)。

现在我想部署一个真正的证书,所以我从RapidSSL购买了一个。他们给我发了两个按键,在纯文本电子邮件中,无论是在

-----BEGIN CERTIFICATE----- 
blah 
-----END CERTIFICATE----- 

一个被标注Web server CERTIFICATE,其他INTERMEDIATE CA格式。

我复制的Web server CERTIFICATE来命名一个新的文件(这个问题的缘故)内容prodPrivatekey.pem和我搬到INTERMEDIATE CAprodCertificate.pem。然后我替换上面代码中的路径。


首先,可能有人请告诉我,如果这样的行动是正确的?假设我几乎不了解SSL证书的内部工作原理!其次,如果是这样,我用这个设置得到的错误是Error: error:0906D06C:PEM routines:PEM_read_bio:no start line。我能找到的唯一帮助是这个问题Node.js https pem error: routines:PEM_read_bio:no start line,但这里的帮助似乎与自签名证书有关。

谢谢你的帮助!

回答

1
var privateKey = fs.readFileSync('privatekey.pem', 'utf8'); 

privateKey应该是私钥。您不会将此信息提供给RapidSSL或从RapidSSL收到此信息。

var certificate = fs.readFileSync('certificate.pem', 'utf8'); 

certificate应该是一个已经的RapidSSL标注Web服务器证书

这使得INTERMEDIATE CA。这是一个中级证书(在您和RapidSSL的根证书之间)。您需要将其包含在您的应用程序中,否则某些浏览器(例如Android上的浏览器)将会看到一个错误,指出“不可信证书”或此类性质。

把它列入你的配置,你会做这样的事情:

var intermediateCertificate = fs.readFileSync('intermediate.pem', 'utf8'); 
https.createServer({ 
    key: privateKey, 
    cert: certificate, 
    ca: [ intermediateCertificate ] 
}, app).listen(port); 

一旦这个工作,如果你的网站是公开的,使用在线扫描仪如SSL Labs Server Test,看看测试你的网站的SSL配置您的SSL配置是安全的(分数A或A +)。根据您正在运行的节点的版本,默认值可能不够安全。

+1

非常感谢您的帮助!你让我从一个粘性的洞里走出来 - 现在我明白了SSL更好一点!对于那些处于同样情况的人,我还必须让RapidSSL重新颁发证书(请参阅https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO5757)并提供给他们与我的CSR(通过运行此命令创建'openssl req -newkey rsa:2048 -nodes -keyout ssl/prod/domain.key -out ssl/prod/domain.csr')。然后在我的快速配置中,我使用在最后一个命令('domain.key')中创建的私钥和重新颁发的证书 –