如何通过ELB将ssl连接到由GlassFish在Amazon AWS EC2实例上提供的websocket?
我在GlassFish 4.1 b13预发行版中使用Tyrus 1.8.1作为我的websocket实现。
端口8080是不安全的,端口8181是用ssl保护的。
我已成功使用了两个ws& wss直接连接到我的EC2实例(绕过我的ELB)。即以下两个网址都有效:
我通过使用tcp 80>成功地在我的ELB上使用了ws(非ssl)。 tcp 8080听众。即以下网址有效:
然而,我没有找到一种方法来使用wss作为我的ELB。
我尝试了很多东西。
我认为最有可能通过我的ELB工作的方法是创建一个tcp 8181>启用了代理协议的我的ELB上的tcp 8181侦听器,并使用以下URL:
不幸的是,这不起作用。我想我可能必须在glassfish上启用代理协议,但是我无法找到如何做到这一点(或者如果可能的话,或者wss是否有必要在我的ELB上工作)。
另一种选择可能是以某种方式让ws或wss在ELB上终止的ssl连接上运行,并通过使用ssl>继续对glassfish进行不安全保护。 tcp 8080听众。这对我来说也不起作用,但也许有些设置不正确。
有没有人对我上述两项试验进行任何修改。或者有人有其他建议吗?
感谢。
答案 0 :(得分:15)
我有类似的设置,最初配置我的ELB监听器如下:
虽然这适用于网站本身,但websocket连接失败了。在监听器中,您需要允许所有安全的TCP连接而不是SSL,以允许wss通过:
我还建议提高ELB的空闲超时。
答案 1 :(得分:7)
我最近在浏览器和EC2 Node.js实例之间启用了wss。 有两件事需要考虑:
这显然不是终极解决方案,因为超时仍然存在,但1小时可能足够我们通常做的事情。
希望这个帮助