node.js - 在 Node/express 上安装 RapidSSL 证书

标签 node.js ssl express https

我对如何在我的 Node 服务器上配置 SSL 感到非常困惑!

到目前为止我所做的是:

-在本地计算机上创建自签名 key 和证书以进行本地测试

-将此代码添加到我的快速设置中

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

这在本地没问题(我收到浏览器错误,但我知道这是因为我自签名并且我不是受信任的权威机构)。

现在我想使用真实的证书进行部署,因此我从 RapidSSL 购买了一个。他们在电子邮件中以明文形式向我发送了两个 key ,格式均为

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

一个标记为Web 服务器证书,另一个标记为INTERMEDIATE CA

我将Web服务器证书的内容复制到一个名为(为了解决这个问题)prodPrivatekey.pem的新文件,并且我移动了INTERMEDIATE CAprodCertificate.pem。然后我替换了上面代码中的路径。


首先,有人可以告诉我这个做法是否正确吗?假设我对 SSL 证书的内部运作几乎一无所知!

其次,如果是这样,我在此设置中遇到的错误是错误:错误:0906D06C:PEM例程:PEM_read_bio:无起始行。我能找到的唯一帮助是这个问题Node.js https pem error: routines:PEM_read_bio:no start line但这里的帮助似乎与自签名证书有关。

感谢您的帮助!

最佳答案

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

privateKey 应该是您的私钥。您不会向 RapidSSL 提供此信息或从 RapidSSL 接收此信息。

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

证书 应该是一个 RapidSSL 已标记为 Web 服务器 CERTIFICATE

剩下中级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+)。根据您运行的 Node 版本,默认值可能不够安全。

关于node.js - 在 Node/express 上安装 RapidSSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598336/

相关文章:

javascript - 何时在 Nodejs 中关闭 MongoDB 数据库连接

php - curl错误60 :ssl certificate problenm in youtube data api V3?如何解决

函数中的 Node.js 请求

Node .js : Error: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

node.js - Angular.js/D3.js/Node.js 之间有什么区别和相似之处

node.js - now.js 如何在没有浏览器(简单客户端)的情况下获取 'now' 对象?

javascript - 在 node.js 中读取缓冲区对象

混帐克隆 : GnuTLS recv error (-9): A TLS packet with unexpected length was received

ssl - 不需要的 nginx 重定向到 https

javascript - 如何在 express 中导出应用程序对象?