我无法让我的SSL服务器与Godaddy的证书一起使用
使用Express:3.1.0
在此之下,可以使用本地生成的密钥/ crt /未经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,我相信您可以像这样实现,但是我遇到了错误
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(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误。
说实话我不是在创建他们的devops家伙要的密钥/证书…我不确定如果我错误地实现了Godaddy的密钥或者是否有办法确保他正确设置密钥/ crt文件,该如何解决....
有人公然看到明显错误的东西吗?
节点要求将CA链中的每个证书分别在数组中传递。 gd_bundle.crt可能看起来像这样:
gd_bundle.crt
-----BEGIN CERTIFICATE----- MIIE3jCCA... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEADCCA... -----END CERTIFICATE-----
每个证书都需要放在自己的文件中(即gd1.crt和gd2.crt)并分别读取。
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')] });