【问题标题】:Installing a RapidSSL certificate on node/express在 node/express 上安装 RapidSSL 证书
【发布时间】:2016-09-20 15:38:09
【问题描述】:

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

到目前为止我所做的是:

-在我的本地机器上创建一个自签名密钥和证书以进行本地测试

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

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 CA 移动到prodCertificate.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,但这里的帮助似乎与自签名证书有关。

感谢您的帮助!

【问题讨论】:

    标签: node.js ssl express https


    【解决方案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+)。根据您运行的节点版本,默认值可能不够安全。

    【讨论】:

    • 非常感谢您的帮助!!你让我摆脱了困境——现在我对 SSL 有了更好的理解!对于那些处于相同情况的人,我还必须让 RapidSSL 重新颁发证书(参见此处 - knowledge.rapidssl.com/support/ssl-certificate-support/…)并向他们提供我的 CSR(通过运行此命令 openssl req -newkey rsa:2048 -nodes -keyout ssl/prod/domain.key -out ssl/prod/domain.csr 创建)。然后在我的快速配置中,我使用了在最后一个命令中创建的私钥 (domain.key) 和重新颁发的证书
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2017-07-15
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多