我在 Digital Ocean Droplet 上托管了一个国际象棋应用程序网站。
在服务器上,我使用以下方式提供一个静态 React 应用pm2。我还运行了一个 GoLang 服务器,该服务器以单个 Websocket 端点作为后端。因此,这两个服务器位于同一个 droplet 上,即同一个 IP 地址上。
有一个负载均衡器使用通过 Digital Ocean 的 Lets Encrypts 集成生成的 SSL 证书将 HTTPS 转发到 HTTP。
该网站在 Chrome 上运行良好(参见tonycodes.com)。但是在手机和Safari浏览器上,却出现错误。
尝试连接 Golang 服务器 websocket 时,Safari 的 Web 检查器返回此错误:
WebSocket network error: OSStatus Error -9807: Invalid certificate chain
这些是负载均衡器设置:
GoLang websocket 端点位于端口 8081 上。React 前端位于端口 80 上。
我不熟悉 SSL 加密证书链规则,我可能会因为此设置而违反这些规则。任何帮助我都非常感谢,提前谢谢您!
答案1
您的代码正在尝试连接到。但您的服务器证书不是为“157.230.65.223”颁发的,而是为“tonycodes.com”颁发的。请求的 URL 与收到的证书不匹配wss://157.230.65.223:8081/uci
总是导致 TLS 连接出现严重故障,因为不这样做就会绕过主要的 TLS 安全措施之一。
将您的 websocket URL 更改为。wss://tonycodes.com:8081/uci