node.js - 带有 express : Missing PFX or certificate + private key. 的 socket.io 中的 SSL

标签 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.');。有谁知道会发生什么?这个答案的其他解决方案都没有解决我的问题。

最佳答案

为您的私钥使用 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/

相关文章:

c - HTTP 服务器未将完整文件发送到 WGET、Firefox。连接被对等方重置?

javascript - Python Web 服务器 HTML 渲染

c# - TLS 1.2 支持是否仅取决于 .NET 框架的版本?

php - 如何从 opencart 项目中删除 ssl 证书?

node.js - 带有嵌套提示的 Yeoman.io 在 Inquirer.js 中产生未定义的错误

javascript - node.js 在插入到 couchbase 后永远不会退出,这与大多数 Node 问题相反

node.js - Meteor.js 在没有日志的情况下被杀死

java - 在 Java MMO 中向客户端获取数据

php - file_get_contents 忽略 verify_peer=>false?

Node.js 服务器崩溃而没有错误消息