2014-09-08 11 views
10

Jak mogę połączyć się przez SSL z websemocket obsługiwanym przez GlassFish na instancji Amazon AWS EC2 przez ELB?WebSockets: wss od klienta do instancji Amazon AWS EC2 poprzez ELB

Używam Tyrus 1.8.1 w wydaniu wstępnym GlassFish 4.1 b13 jako mojej implementacji websocket.

Port 8080 jest niezabezpieczony, a port 8181 jest zabezpieczony przez ssl.

  • ELB nazwa DNS: elb.xyz.com
  • EC2 nazwa DNS: ec2.xyz.com ścieżka
  • websocket:/web/gniazdo

mam z powodzeniem stosować zarówno ws & wss, aby połączyć się bezpośrednio z moją instancją EC2 (z pominięciem mojego ELB). czyli oba z następujących adresów URL działa:

  • WS: //ec2.xyz.com: 8080/web/gniazdo
  • WSS: //ec2.xyz.com: 8181/web/gniazdo

Pomyślnie użyłem ws (non-ssl) nad moim ELB przy użyciu detektora 80 tcp 8080. tj następujący adres URL działa:

  • WS: //elb.xyz.com: 80/web/gniazdo

Ja jednak nie udało się znaleźć sposób na wykorzystanie WSS chociaż moja ELB.

Próbowałem wielu rzeczy.

Przypuszczam, że najbardziej prawdopodobnym sposobem na uzyskanie WSS pracować przez moją ELB byłoby stworzyć tcp 8181> tcp 8181 słuchacza na moim ELB z protokołem Proxy włączony i kliknąć na poniższy link:

  • WSS : //elb.xyz.com: 8181/web/socket

Niestety, to nie działa. Sądzę, że być może będę musiał włączyć protokół proxy na glassfish, ale nie byłem w stanie dowiedzieć się, jak to zrobić (lub jeśli jest to możliwe, lub jeśli jest to konieczne, aby wss pracował nad moim ELB).

Inną opcją może być w jakiś sposób uruchomienie ws lub wss za pośrednictwem połączenia ssl, które jest zakończone na ELB, i niech dalej będzie niezabezpieczone dla glassfish, za pomocą detektora ssl> tcp 8080. To też nie działało dla mnie, ale może niektóre ustawienia były nieprawidłowe.

Czy ktoś ma jakieś modyfikacje do moich dwóch wyżej wymienionych badań. A może ktoś ma jakieś inne sugestie?

Dzięki.

Odpowiedz

5

Niedawno włączyłem wss między moją przeglądarką a instancją ECode Node.js. Były 2 rzeczy do rozważenia:

  • w zakładce słuchaczy ELB, dodać wiersz do portu WSS z protokołu SSL jako równoważenia obciążenia.
  • na karcie opisu ELB, ustaw wyższy limit czasu bezczynności (ustawienia połączenia), który domyślnie wynosi 60 sekund. ELB zabijało połączenia sieciowe po 1 minucie, ustawienie limitu czasu bezczynności na 3600 (maksymalna wartość) umożliwia znacznie dłuższą komunikację.

Oczywiście nie jest to najlepsze rozwiązanie, ponieważ limit czasu nadal istnieje, ale 1 godzina jest prawdopodobnie wystarczająca do tego, co zwykle robimy.

nadzieja ta pomoc

8

miałem podobną konfigurację i oryginalnie skonfigurowany moich słuchaczy ELB następująco:

  • HTTP 80 HTTP 80
  • HTTPS 443 HTTPS 443

Chociaż działało dobrze dla samej strony, połączenie z siecią nie powiodło się. W słuchacza, trzeba zezwolić na cały bezpiecznego połączenia TCP w przeciwieństwie tylko SSL umożliwiają WSS aby przejść także:

  • HTTP 80 HTTP 80
  • SSL (Secure TCP) 443 SSL (Secure TCP) 443

Polecam również zwiększenie limitu czasu bezczynności ELB.

+0

Mam na myśli "w przeciwieństwie do HTTPS tylko" – guillaumepiot

+3

Dziękuję, Bezpieczny TCP zamiast HTTPS zrobił lewę! –

+0

"SSL (Secure TCP) 443 TCP 80" działa również –

Powiązane problemy