我已完成以下页面上的指示: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
答案 0 :(得分:1)
事实证明,使用openssl生成证书时出现问题。
我真的不知道发生了什么,但是由于我已经发布了一个自签名证书(Visual Studio在开发要使用IISEXPRESS调试的站点时使用的证书),因此我已经使用Digicert实用程序导出了该证书。我最终可以使用socket.io进行连接。
问候 海梅