一台服务器上具有两个域的RedBird.js和Node.js的ZeroSSL证书

时间:2020-06-11 18:06:48

标签: node.js ssl-certificate redbird

错误(?)新闻“ 免费SSL 加入 ZeroSSL ”。从他们的消息开始,我更新了证书,并且TLS停止工作。过去工作正常。

使用新证书,我收到来自https://www.sslshopper.com/ssl-checker.html的错误“您可能需要安装中间/链证书以将其链接到受信任的根证书”,并且收到来自{{3}的错误“ TLS证书不受信任” }。

浏览器足够聪明,可以掩盖此问题,但是我的Android应用使用了API,因此无法正常工作。

自ZeroSSL介入以来,还有其他人遇到 TLS问题吗?

我正在 nodejs 上使用 redbirdjs ,这非常好,因为它是如此简单(两个域,同一台服务器),但是Zero没有提供安装说明。 (我的域流量很小,因此使用最快的网络服务器等不是问题。)

Zero在一个证书选项中夺走了2个域(谢谢),所以我更新后的脚本如下:


const { constants } = require('crypto');

var redbird = new require('redbird')({ port: 8080, ssl: { port: 443 }});

redbird.register('domain1.com', 'http://127.0.0.1:9443', {
    ssl: {
        key: 'ssl/domain1/private.key',
        cert: 'ssl/domain1/certificate.crt',
        ca: 'ssl/domain1/ca_bundle.crt',
        secureOptions: constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1,
    }
});

redbird.register('domain2.com', 'http://127.0.0.1:3003', {
    ssl: {
        key: 'ssl/domain2/private.key',
        cert: 'ssl/domain2/certificate.crt',
        ca: 'ssl/domain2/ca_bundle.crt',
        secureOptions: constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1,
    }
});

除了分离域ssl配置外,它与用于SSLForFree的相同。

我在某处读到“免费” SSL CA不一定提供“完整链”。

任何人都知道如何在Redbirdjs和Node.js上使TLS与ZeroSSL一起使用吗?

1 个答案:

答案 0 :(得分:0)

好吧,我知道了。我使用了https://whatsmychaincert.com,我认为它实际上只是将几个文件连接在一起。对于像我这样的红鸟迷来说,这两种方法都是在同一服务器上针对多个域的脚本。

// https://github.com/OptimalBits/redbird
// https://whatsmychaincert.com/
// 9443 is where domain1 server runs locally
// 3003 is where domain2 server runs locally

const { constants } = require('crypto');

var redbird = new require('redbird')({ port: 8080, ssl: { port: 443 }});

redbird.register('domain1.com', 'http://127.0.0.1:9443', {
    ssl: {
        port: 9443,
        key: 'ssl/domain1/private.key',
        cert: 'ssl/domain1/domain1.chained.crt',  // used whatsmychaincert.com to generate ('enter hostname', no need to include root)
        secureOptions: constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1,
    }
});

redbird.register('domain2.net', 'http://127.0.0.1:3003', {
    ssl: {
        port: 3003,
        key: 'ssl/domain2/private.key',
        cert: 'ssl/domain2/domain2.chained.crt',
        secureOptions: constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1,
    }
});

在从ZeroSSL下载的3个文件中,whatsmychaincert.com将certificate.crt和ca_bundle.crt(按此顺序)放入一个名为domain.chained.crt的文件中(如上面的脚本所示)。