virginia pricing precios elb east balancer aws application ssl websocket glassfish wss amazon-elb

ssl - precios - elb pricing



WebSockets: wss del cliente a la instancia de Amazon AWS EC2 a través de ELB (2)

¿Cómo puedo conectarme a través de SSL a un websocket servido por GlassFish en una instancia de Amazon AWS EC2 a través de un ELB?

Estoy usando Tyrus 1.8.1 en GlassFish 4.1 b13 prelanzamiento como mi implementación de websocket.

El puerto 8080 no está protegido, y el puerto 8181 está asegurado con ssl.

  • Nombre de ELB dns: elb.xyz.com
  • Nombre de EC2 dns: ec2.xyz.com
  • ruta websocket: / web / socket

He utilizado con éxito ws y wss para conectarme directamente a mi instancia de EC2 (omitiendo mi ELB). es decir, las dos siguientes URL funcionan:

  • ws: //ec2.xyz.com: 8080 / web / socket
  • wss: //ec2.xyz.com: 8181 / web / socket

He utilizado ws (no-ssl) con éxito en mi ELB utilizando un oyente tcp 80> tcp 8080. es decir, la siguiente url funciona:

  • ws: //elb.xyz.com: 80 / web / socket

Sin embargo, no he podido encontrar una manera de usar wss a través de mi ELB.

He intentado muchas cosas.

Supongo que la forma más probable de hacer que wss funcione a través de mi ELB sería crear un oyente tcp 8181> tcp 8181 en mi ELB con el protocolo proxy habilitado y usar la siguiente url:

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

Lamentablemente, eso no funciona. Supongo que podría tener que habilitar el protocolo proxy en glassfish, pero no he podido averiguar cómo hacerlo (o si es posible, o si es necesario para que wss funcione con mi ELB).

Otra opción podría consistir en ejecutar de alguna manera ws o wss en una conexión ssl que finaliza en el ELB, y hacer que continúe sin protección para glassfish, utilizando un oyente ssl> tcp 8080. Eso tampoco funcionó para mí, pero tal vez algún ajuste fue incorrecto.

¿Alguien tiene alguna modificación a mis dos ensayos antes mencionados? ¿O alguien tiene alguna otra sugerencia?

Gracias.


Tuve una configuración similar y originalmente configuré mis oyentes ELB de la siguiente manera:

  • HTTP 80 HTTP 80
  • HTTPS 443 HTTPS 443

Aunque esto funcionó bien para el sitio web en sí, la conexión websocket falló. En el oyente, debe permitir todas las conexiones TCP seguras en lugar de SSL solo para permitir que Wss pase también:

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

También recomendaría aumentar el tiempo de inactividad del ELB.


Recientemente habilité wss entre mi navegador y una instancia de EC2 Node.js. Había 2 cosas para considerar:

  • en la pestaña de oyentes ELB, agregue una fila para el puerto wss con SSL como protocolo de equilibrio de carga.
  • en la pestaña de descripción ELB, establezca un tiempo de inactividad más alto (configuración de conexión), que es de 60 segundos por defecto. El ELB estaba matando las conexiones de websocket después de 1 minuto, estableciendo el tiempo de espera inactivo a 3600 (el valor máximo) permite una comunicación mucho más larga.

Obviamente, no es la solución definitiva ya que el tiempo de espera todavía está allí, pero 1 hora es probablemente lo suficientemente buena para lo que solemos hacer.

espero que esto ayude