我试图在Node.js中使用我购买的SSL证书 – 这个证书在Nginx和Apache中完美工作,没有任何错误。
但是,当我尝试在Node.js中使用它,我得到这个错误:
tls.js:1124 throw new Error('Missing PFX or certificate + private key.'); ^ Error: Missing PFX or certificate + private key. at Server (tls.js:1124:11) at new Server (https.js:35:14) at Object.exports.createServer (https.js:54:10) at Object.<anonymous> (/usr/home/server.js:9:20) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16)
这是我的server.js代码:
var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('key.key'), cert: fs.readFileSync('cert.crt') }; var server = https.createServer(function(req, res) { res.writeHead(200); res.end('Hello Http\r\n'); }); server.listen(8080, '127.0.0.1');
我注意到一些例子需要将.crt和.key转换成.pem格式。 我能够转换.crt文件,但转换.key文件给我这个错误:
[localhost ~]$ openssl x509 -in key.key -out key.pem -outform PEM unable to load certificate 34379118248:error:0906D06C:PEM routines:PEM_read_bio:no start line:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/pem/pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
我在接下来要做的事上感到不知所措。 正如我前面提到的,这个SSL证书目前已经安装在Nginx和Apache上运行,没有任何问题。
任何想法接下来我可以尝试吗?
** 解决了 **
我只需要将“createServer”行更改为:
var server = https.createServer(options, function(req, res)
私钥是RSA格式,而不是X509。 在openssl转换命令中使用“rsa”而不是“x509”。