socket.io中的SSL with express:缺少PFX或证书+私钥.

Fan*_*ane 6 sockets ssl node.js socket.io

我想通过SSL套接socket.io.我已经阅读了其他答案,但没有任何效果

这是我的代码:

var ssl_options = {
    key : fs.readFileSync(my_key_path),
    cert : fs.readFileSync(my_cert_path)
};

var protocol = "https";

preparedApp = require(protocol).createServer(ssl_options,app);

var io = require('socket.io')(preparedApp);

preparedApp.listen(8080, function(){});
io.on('connection', function(socket){});
Run Code Online (Sandbox Code Playgroud)

这是我的ssl_options的日志...

{ key: <Buffer 41 ...>,
 cert: <Buffer 4a ...> }
Run Code Online (Sandbox Code Playgroud)

这与标题中的错误有关throw new Error('Missing PFX or certificate + private key.');.有谁知道可能会发生什么?这个答案的其他解决方案都没有解决我的问题.

win*_*ndm 2

使用 PEM (RSA) 格式作为您的私钥。检查私钥是否是 Base64 编码的,包含在“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”之间

来自文档:

  • key:包含 PEM 格式的服务器私钥的字符串或缓冲区
  • cert :保存 PEM 编码证书的字符串
  • passphrase:私钥或 pfx 的密码字符串 [可选默认值:null]

或者

  • pfx :保存 PFX 或 PKCS12 编码私钥、证书和 CA 证书的字符串或缓冲区

要将私钥转换为 RSA PEM:openssl rsa -in <PATH TO KEY> -out key.pem -outform PEM

要创建 PKCS #12 捆绑包,请使用openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.pem -out host.pfx

- 添加 -

确保证书是 PEM 编码运行openssl x509 -in <PATH TO CERT> -out cert.pem -outform PEM