最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

自动从httpsws服务器获取服务器证书

网站源码admin14浏览0评论

自动从https / ws服务器获取服务器证书

自动从https / ws服务器获取服务器证书

我正在git页面上托管一个网站,该网站使用此库在github/websockets/ws上通过安全websocket(wss)的某些点击打开了视频流。当通过简单的websocket(ws)从http页面连接视频时,一切都很好,但是我意识到github页面将通过https托管,并且firefox不允许通过https实现不安全的websocket连接,因此必须使用wss。

为此,我按照websockets ws页面上的步骤进行操作,并且websocket服务器有点“隐藏”在执行证书握手的https服务器后面。问题是这样的:如果我正常使用我的网页并打开一个链接,该链接开始到与视频的wss连接,则该服务器不起作用,服务器不知道该视频存在。如果我首先使用https://IP:999链接通过IP和端口直接访问服务器,它将检索证书,然后在该网站上无限期运行。

是否有一种自然的方法,不需要我尝试访问无头服务器来进行证书握手?我只想打开wss连接,但是必须直接访问服务器以获取证书的开销似乎有些奇怪。

服务器设置如下:

  const server = https.createServer({
    cert: fs.readFileSync('./cert/cert.pem'),
    key: fs.readFileSync('./cert/key.pem'),
}, function (req, res) {
    console.log(new Date() + ' ' +
    req.connection.remoteAddress + ' ' +
    req.method + ' ' + req.url);
    res.writeHead(200);
    res.end("hello foobarbackend\n");
    });
  this.wsServer = new ws.Server({
    server
  })
  this.wsServer.on("connection", (socket, request) => {
    return this.onSocketConnect(socket, request)
  })
  server.listen(9999, '0.0.0.0');

一旦通过https://:9999检索了证书,然后我就可以在wss://:9999的浏览器上播放视频了,那么我肯定丢失了一些东西。

回答如下:

这里的问题完全由SSL / TLS解决。这里的问题是,安全的浏览器将几乎无声地拒绝与具有自签名证书的服务器的WSS://连接。我的证书是自签名的。

这就是用户首先必须直接通过HTTP导航到服务器IP,然后接受警告的原因。从那里照常营业。

要做的是为服务器所在的IP注册一个域名(Droplet)。然后使用certbot为该域生成真实的证书(密钥,cert)。我将上面的cert.pem和key.pem替换为真实生成的证书。域名可以是mywebsitewhatever.app之类的东西。

现在在客户端,您可以打开与wss://mywebsitewhatever.app:9999的连接,浏览器将自动接受它,一切正常。没有警告或导航到警告页面以接受。

发布评论

评论列表(0)

  1. 暂无评论