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

时间:2015-10-25 19:45:11

标签: node.js sockets ssl 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){});

这是我的ssl_options的日志......

{ key: <Buffer 41 ...>,
 cert: <Buffer 4a ...> }

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

1 个答案:

答案 0 :(得分:2)

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

来自文档:

  • key:包含PEM格式的服务器私钥的字符串或缓冲区
  • cert:包含PEM编码证书的字符串
  • 密码:私钥或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