允许本地服务器通过 https 的 websockets

Allowing websockets over https for local server

我需要为我所做的项目提供一些指导。 我在本地服务器中有一个现有的节点红色,它使用 websocket 将数据发送到我托管的域。通过 http 一切正常,但当我为我的域使用 https 时出现问题。我使用 websocket ws: 之前,我将其更改为 wss: 以通过 https 工作,但它仍然无法正常工作,因为我意识到我的本地服务器也需要 SSL 证书。然后,我为我的本地服务器使用了自签名证书。它有效,但我必须在我的浏览器中手动输入我的本地服务器 DDNS 以首先允许 wss 然后返回我的托管域,我不能期望用户这样做。

我在本地服务器上使用了 DDNS,因为我没有静态 IP。我试图要求我的 ISP 提供静态 IP,但在不久的将来无法完成。 因为我没有静态 IP,所以我无法注册域,也无法将 CA 证书用于本地服务器 SSL。

我的问题是:

  1. 有没有办法让 ws 在 https 上工作?
  2. 如果不是,有没有办法在用户访问我的页面时通过按钮或提示在我的域页面上允许不安全的 wss?所以用户不必手动输入我的本地服务器 DDNS。
  3. 或您建议的其他方式。
  1. 否,Websocket 连接通过 HTTP 引导,安全 Websocket 连接通过 HTTPS。 TLS 会话由 HTTPS 连接设置。

  2. 不清楚你在这里问的是什么。但是获得自签名证书以使用 websocket 连接的唯一方法是在尝试访问该站点之前将该证书安装到浏览器信任的证书存储中。浏览器不会提示信任 websocket 连接的证书。

  3. 您可以通过适当的动态 DNS 设置使用 Letsencrypt。这是你有一个固定的域名和你的机器上的一个脚本来更新域名指向的 IP 地址的地方。主机名将保持不变,因此颁发的证书将始终具有正确的 CN/SAN 条目。 Letsencrypt 证书由受信任的 CA 证书签名,该证书已存在于您的浏览器中。