![Node.js SSL 证书错误](https://linux22.com/image/641448/Node.js%20SSL%20%E8%AF%81%E4%B9%A6%E9%94%99%E8%AF%AF.png)
我正在尝试在 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)
答案1
私钥采用 RSA 格式,而非 X509 格式。在 openssl 转换命令中使用“rsa”代替“x509”。