Node.js SSL 证书错误

Node.js SSL 证书错误

我正在尝试在 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”。

相关内容