WSS websocket 的 ELB 监听器配置

Posted

技术标签:

【中文标题】WSS websocket 的 ELB 监听器配置【英文标题】:ELB listener configuration for WSS websocket 【发布时间】:2018-05-17 09:59:44 【问题描述】:

我的 Websocket WS 工作正常。但是当我使用 WSS 时,它失败并出现以下错误。

到“wss://mywebsocket.ca/”的 WebSocket 连接失败:连接建立错误:net::ERR_INSECURE_RESPONSE 感觉有些 SSL 问题。我已正确配置我的证书,并且通过此 ELB 的所有其他 url 都可以正常工作。我的 Ws curl 效果很好。

可能是什么问题?可能是 HTTPS 的 ELB 的侦听器配置没有正确完成。

我只是使用一些chrome扩展来连接Websocket。这里没有代码。

【问题讨论】:

【参考方案1】:

我花了一段时间才弄清楚。我希望我没有忘记下面答案中的任何内容,因为这是不久前我做到的。

首先,您需要绕过 CloudFront,因为它不能很好地与 websockets 一起运行(除非最近发生了一些变化)。设置一个 A 别名 Route 53 记录指向您的负载均衡器(即 websockets.domain.com)。

在您的负载均衡器中为您的端口设置一个侦听器(即 5678)。请注意,您应该使用 SSL(安全 TCP)协议。您还需要一个 SSL 证书给您的听众。为此使用 ACM,它为您提供了选择。

记得更改您的 websockets 连接以使用这个新连接。

【讨论】:

我有 cloudfront,它指向我的 S3 存储桶,在其中编写了 websocket 客户端。这是否意味着它不起作用? 我不明白你们的架构现在是什么样子的。你说你有ELB?在 ELB 后面你有 EC2 实例,这就是答案。我很确定您需要 CloudFront 才能将 SSL 证书用于 S3 存储桶,这意味着它不起作用。 ELB 有 Websocket 服务器。而 S3 有 Websocket Angular 客户端。 S3 前面有云端以支持 SSL。所以 S3 与 ELB 对话。所以它不会工作? 好吧好吧。如果 websocket 服务器在 ELB 后面,它应该可以工作。只需确保您的客户端在连接时使用 wss://websocket.domain.com。 我的 WSS 仍然无法工作。它在连接建立时出错:net::ERR_INSECURE_RESPONSE

以上是关于WSS websocket 的 ELB 监听器配置的主要内容,如果未能解决你的问题,请参考以下文章

Websocket配置证书支持wss

配置Websocket wss连接

宝塔 apache 反向代理配置wss服务

Nginx配置wss访问实现微信小程序的websocket通信

用于 SSL PHP 站点和 Websockets WSS 的 Nginx 配置?

nginx配置websocket支持wss