运行SSL的node.js服务器与godaddy gd_bundle.crt
我无法让我的SSL服务器证书的从GoDaddy的运行SSL的node.js服务器与godaddy gd_bundle.crt
使用快递工作:3.1.0
下面这个作品用钥匙/这是本地产生的/不通过的Go Daddy签署CRT(浏览器抱怨,但如果添加例外,它的工作原理。
var http = require('https');
var privateKey = fs.readFileSync('/var/www/dev/ssl/server.key').toString();
var certificate = fs.readFileSync('/var/www/dev/ssl/server.crt').toString();
var credentials = {key: privateKey, cert: certificate};
var https = http.createServer(credentials, app);
与GoDaddy我提供了一个额外的文件gd_bundle.crt WHI CH我相信你实现这样的,但是我得到一个错误
var http = require('https');
var privateKey = fs.readFileSync('/var/www/prod/ssl/mysite.key').toString();
var certificate = fs.readFileSync('/var/www/prod/ssl/mysite.com.crt').toString();
var ca = fs.readFileSync('/var/www/prod/ssl/gd_bundle.crt').toString();
var credentials = {key: privateKey, cert: certificate, ca: ca};
var https = http.createServer(credentials, app);
有了这个配置,我得到错误:107(净值:: ERR_SSL_PROTOCOL_ERROR):SSL协议错误。
真相被告知我不是在创建他们的钥匙/ certs我们的devops家伙......我不知道如果我错误地实施了godaddy,或者如果有方法确保他设置密钥/ crt文件正确....
有没有人看到任何公然明显错误?
节点要求将CA链中的每个证书分别传递到一个数组中。 gd_bundle.crt
大概是这样的:
-----BEGIN CERTIFICATE-----
MIIE3jCCA...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEADCCA...
-----END CERTIFICATE-----
每个证书都需要被放在它自己的文件(即gd1.crt
和gd2.crt
),并分别读出。
https.createServer({
key: fs.readFileSync('mysite.key'),
certificate: fs.readFileSync('mysite.crt'),
ca: [fs.readFileSync('gd1.crt'), fs.readFileSync('gd2.crt')]
});
最近,我对我们的Node.js服务器之一,Godaddy的SSL证书,有类似的问题。在我的情况下,问题出在我们的一台服务器使用PHP的curl函数验证SSL。
事实证明,在将CSR提交给Godaddy时,我必须选择SHA-1签名算法。我想它与旧系统更兼容。
相关:Mozilla的[逐步淘汰证书与SHA-1基于签名算法(http://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature - 算法/),Google的[Chrome中SHA-1证书更新](http://security.googleblog.com/2015/12/an-update-on-sha-1-certificates-in.html),Microsoft [SHA-1弃用更新](http://security.googleblog.com/2015/12/an-update-on-sha-1-certificates-in.html)等 – jww 2016-05-05 03:35:42
向GoDaddy的在SHA-1签名您的SSL证书和包文件分成两个文件,这样一来...
从gd_bundle.crt
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx
RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH
qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VILs9RaRegAhJhldX
RQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/bvZ8
-----END CERTIFICATE-----
TO gd_bundle_01.crt
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx
RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH
qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV
-----END CERTIFICATE-----
AND gd_bundle_02.crt
-----BEGIN CERTIFICATE-----
56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VILs9RaRegAhJhldX
RQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/bvZ8
-----END CERTIFICATE-----
那么你的服务器上做这个
var fs = require('fs'),
https = require('https');
var ssl = {
key: fs.readFileSync('./ssl/server.key', 'utf8'),
cert: fs.readFileSync('./ssl/server.crt', 'utf8'),
ca: [fs.readFileSync('./ssl/bundle_01.crt', 'utf8'),
fs.readFileSync('./ssl/bundle_02.crt', 'utf8')]
};
https.createServer(ssl, function(req, res) {
//... your code here ...
}).listen(443);
我已经从接收到的Godaddy两个文件。一个较小,只包含一个证书。另一个名为gd_bundle-g2-g1.crt。我知道我需要打破它......但我的密钥文件在哪里? – 2014-08-14 11:37:57
你必须生成服务器的CSR密钥文件,检查GoDaddy的帮助,这在这里http://support.godaddy.com/help/article/5276/generating-a-certificate-signing-request-csr-tomcat- 4-X5-X6-X – fuelusumar 2014-08-28 21:17:28
你可以使用这个命令太...'$的openssl genrsa -des3退房手续www.yourdomain-example.com.key 2048' – fuelusumar 2014-08-28 21:21:07
简单
为什么这么具体的只是GoDaddy的CA软件包时,你可以保持不同的环境相同的方法?例如,我只需要dev env的两个文件,但生产使用GoDaddy证书,并且有许多如此操作?
对于GoDaddy的,我把他们的包,并将它添加到一个单一的文件,并命名为扩展名为PEM以及其中给出了各类证书的一个非常标准的做法密钥文件。
然后你最终只是在做这适用于所有环境:
server = https.createServer({
key: fs.readFileSync(config.sslKey),
cert: fs.readFileSync(config.sslCert),
},app).listen(config.sslPort);
在您的GoDaddy的cert.pem文件,你只需将你的证书,并从1到x您的包文件(从上到下)和你”再次像这样进行:
-----BEGIN CERTIFICATE-----
site certificate goes here
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CA 1 goes here
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CA 2 goes here
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
CA X goes here
-----END CERTIFICATE-----
不一定好,但我更喜欢它。我在Express 3.x上没有遇到过我必须执行CA数组路由,但对于特定版本我可能会出错。
是的,这里面gd_bundle.crt有什么似乎是两个CA的我认为这是奇怪的....所以你说我需要进行编辑,并把他们两个文件,并在数组中加载它们。我会试试这个谢谢你! – nwkeeley 2013-04-29 12:14:17
确认将每个'BEGIN CERTIFICATE' ...'END CERTIFICATE'块放在一个单独的文件中,然后使用这里显示的数组,为我工作。解决的网站,似乎在桌面上很好,但不被android信任,使用comodo连接的“apache包文件”。 – doug65536 2015-10-08 04:16:04