创建用于https连接的socket.io服务器

时间:2020-09-28 15:12:00

标签: node.js socket.io openssl

我已完成以下页面上的指示: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的调用中指定它来进行操作,但是该文件也不起作用。

有帮助吗?

Jaime

1 个答案:

答案 0 :(得分:1)

事实证明,使用openssl生成证书时出现问题。

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

问候 海梅