如何使浏览器信任本地网络 wss:// 连接?

Posted

技术标签:

【中文标题】如何使浏览器信任本地网络 wss:// 连接?【英文标题】:How to make browsers trust a local network wss:// connection? 【发布时间】:2019-03-05 09:48:31 【问题描述】:

我正在尝试使用 nginx 反向代理 https://github.com/nicokaiser/nginx-websocket-proxy/blob/master/simple-wss.conf 将 websocket 连接 ws:// 升级到 wss://

但我似乎在证书部分遇到问题。我的服务器与客户端位于同一网络上。所以理想情况下,我希望我的用户登录到“https://example.com”,然后客户端连接到“wss://192.168.1.xxx:xxxx”。

由于 NET::ERR_CERT_COMMON_NAME_INVALID,目前浏览器正在阻止它。我真的不知道要生成浏览器在本地网络上信任的自签名证书。如果使用域名访问我的服务器,谷歌搜索只会给我答案,但我将始终连接到本地网络 IP。感谢您的帮助!

【问题讨论】:

【参考方案1】:

对于遇到此问题的任何人,我设法通过这篇概述架构的帖子来解决它https://support.plex.tv/articles/206225077-how-to-use-secure-server-connections/

最终发生的事情是,我们设置了一个指向运行 nginx 的服务器的 url,该服务器解析子域并将连接重定向到该 url。例如:wss://192-168-1-142.mydomain.com 重定向到 ws://192.168.1.142 这使得浏览器信任连接

【讨论】:

我给出了“答案”而不是评论。请看下文。【参考方案2】:

这行得通吗?

您的帖子已经发布一年了,从那时起浏览器变得更加严格。通常,如果您从 HTTPS 页面访问 HTTP 内容,浏览器会产生“混合内容”错误,解决此问题的唯一方法是更改​​站点设置以允许不安全的内容,这对于面对大警告信息。

如果访问 HTTPS 网址重定向到 HTTP 本地 IP 地址,浏览器是否还会抱怨混合内容?

我和你有类似的情况。我正在编写一个渐进式 Web 应用程序 (PWA) 来控制家庭网络上的网络音乐播放器。播放器仅支持 HTTP,但 PWA 需要 HTTPS 服务工作者才能工作并允许“安装”应用程序。

我的解决方案是在家庭网络上运行一个本地服务器,它可以通过 HTTP 与玩家交谈。然后我可以从我的浏览器通过 HTTPS 访问这个服务器,这样浏览器本身就不会进行任何 HTTP 调用。

如果服务器在 localhost 上,这会很好,因为 localhost 是放宽安全规则的特殊情况。但是如果服务器在另一台机器上,我该如何创建 SSL 证书,因为 (1) 证书的主题备用名称 (SAN) 部分似乎不允许本地 IP 地址,并且 (2) 我不会提前知道服务器的IP地址是什么。

如果您的解决方法有效,那么本地服务器可以改用 HTTP,因此我不需要证书。本地服务器可以将自己注册到 Web 服务器,然后浏览器可以通过 HTTPS 连接到 Web 服务器,Web 服务器将通过 HTTP 重定向到本地服务器的 IP 地址。

但是这个技巧有用吗?

【讨论】:

以上是关于如何使浏览器信任本地网络 wss:// 连接?的主要内容,如果未能解决你的问题,请参考以下文章

https 的 WSS 连接失败

如何将浏览器中不受信任的证书手动设置为信任

没有网络连接无法浏览本地域

http\https下websocket的ws\wss链接

Nginx配置之WSS

简单对等 WebRTC 错误:Ice 连接失败