【问题标题】:Creating a socket.io server for https connections为 https 连接创建 socket.io 服务器
【发布时间】:2020-09-28 15:12:00
【问题描述】:

我已完成此页面的说明:https://medium.com/@invingagan/an-express-https-server-with-a-self-signed-certificate-and-socket-io-42d1f02d4d1a

也就是说,我创建了一个自签名证书:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

然后我使用这个服务器代码:

var express = require('express');
var app = express();

var fs = require('fs');

app.use(express.static('public'));

const server = require('https').createServer({
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.cert')
},
    app);

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

server.listen(1437, function () {
    console.log('https and websocket listening on *:1437');
});

但是,当我尝试使用 socket.io 客户端连接时,我收到了这个错误:

index.js:83 GET https://localhost:1437/socket.io/?framespersecond=15&audioBitrate=22050&EIO=3&transport=polling&t=NJLEHQL net::ERR_CERT_AUTHORITY_INVALID

如果我只是将 URL 复制并粘贴到浏览器 URL 字段中,我会收到相同的错误,所以这不是 socket.io 客户端的问题,而是服务器错过了配置。

我尝试创建一个 CA 文件并在对 createServer 的调用中指定它,但它也不起作用。

有什么帮助吗?

詹姆

【问题讨论】:

  • 我想你必须用express配置socket io吗? 'const ios = require(‘socket.io’)(secureServer); 好像你在教程中错过了这个。
  • @AvivLo 对不起,我不知道代码很重要,所以我没有将它添加到问题中。我已经有了这个: var io = require('socket.io')(server);但是,它仅用于 io.on('connection', function (socket) { }。我认为这与证书问题无关。

标签: node.js socket.io openssl


【解决方案1】:

原来使用openssl生成证书时出现问题。

我真的不知道发生了什么,但由于我已经颁发了一个自签名证书(Visual Studio 在开发要使用 IISEXPRESS 调试的站点时使用的证书),我已经使用 Digicert 实用程序导出了该证书我终于可以使用 socket.io 进行连接了。

问候 詹姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多