我想通过 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.');
。有谁知道会发生什么?这个答案的其他解决方案都没有解决我的问题。
最佳答案
为您的私钥使用 PEM (RSA) 格式。检查私钥是否为base64编码,包含在“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”之间
来自文档:
- key: 包含服务器私钥的字符串或Buffer,格式为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
关于node.js - 带有 express : Missing PFX or certificate + private key. 的 socket.io 中的 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33334268/