为 https 连接创建 socket.io 服务器

Creating a socket.io server for https connections

我已完成此页面的说明: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 的调用中指定它,但它也不起作用。

有什么帮助吗?

海梅

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

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

进行连接

问候 海梅