mi mal, me di cuenta de que el servidor de socket AIR que estoy usando no es seguro, tengo que volver a escribir para usar flash.net.SecureSocket ...
Eric
Respuestas:
170
La conexión WebSocket comienza su vida con un protocolo de enlace HTTP o HTTPS. Cuando se accede a la página a través de HTTP, puede utilizar WS o WSS (WebSocket seguro: WS sobre TLS). Sin embargo, cuando su página se carga a través de HTTPS, solo puede usar WSS; los navegadores no permiten "degradar" la seguridad.
eso es lo que tengo, pero me di cuenta de que el servidor de socket AIR que estoy usando no es seguro, tengo que volver a escribir para usar flash.net.SecureSocket ...
Eric
Flash también tiene serios problemas ... ¿Está creando un servidor WebSocket (si es así, por qué) o está creando una aplicación?
Peter Moskovits
1
Tengo un servidor de socket AIR que funciona sí.
Eric
Entonces, ¿cómo seleccionar WSS si la página no está cargada con HTTP?
anatoly techtonik
29
No puede usar WebSockets sobre HTTPS, pero puede usar WebSockets sobre TLS (HTTPS es HTTP sobre TLS). Simplemente use "wss: //" en el URI.
Creo que la versión reciente de Firefox no le permitirá usar WebSockets que no sean TLS desde una página HTTPS, pero lo contrario no debería ser un problema.
Entonces, ¿cuál es la solución? Tengo un servidor WS que se ejecuta sobre http ahora compré un SSL y el navegador ya no me permite conectarme con WS.
Cambié
@muaaz su servidor WebSocket debe estar ejecutándose en modo WSS y preferiblemente cargado con el mismo certificado / claves SSL que su servidor web que está sirviendo sus páginas web de origen que intentan conectarse al servidor websocket.
kanaka
4
Gracias. por cierto, acabo de resolverlo mediante proxy (usando apache) la solicitud de wss://a ws://. Entonces, uso wss://ws.domain.comy apache aplico el proxy en él y redirijo la solicitud donde se está ejecutando el servidor WS. por ejemplo: ws://10.12.23.45:5641/server.php. y sé que es una muy mala solución, aunque a mí me funciona. Agradecería su ayuda si me guiara a través de la configuración de apache. por ejemplo: donde poner el .certetc. gracias!
muaaz
@muaaz lo siento, no conozco la configuración de Apache, aparte de buscarla en Google.
kanaka
21
1 advertencia adicional (además de la respuesta de kanaka / peter): si usa WSS y el certificado del servidor no es aceptable para el navegador, es posible que no obtenga ningún cuadro de diálogo del navegador (como sucede con las páginas web). Esto se debe a que WebSockets se trata como un "subrecurso" y el certificado acepta / excepción de seguridad / cualquier cuadro de diálogo que no se represente para los subrecursos.
Respuestas:
La conexión WebSocket comienza su vida con un protocolo de enlace HTTP o HTTPS. Cuando se accede a la página a través de HTTP, puede utilizar WS o WSS (WebSocket seguro: WS sobre TLS). Sin embargo, cuando su página se carga a través de HTTPS, solo puede usar WSS; los navegadores no permiten "degradar" la seguridad.
fuente
No puede usar WebSockets sobre HTTPS, pero puede usar WebSockets sobre TLS (HTTPS es HTTP sobre TLS). Simplemente use "wss: //" en el URI.
Creo que la versión reciente de Firefox no le permitirá usar WebSockets que no sean TLS desde una página HTTPS, pero lo contrario no debería ser un problema.
fuente
wss://
aws://
. Entonces, usowss://ws.domain.com
y apache aplico el proxy en él y redirijo la solicitud donde se está ejecutando el servidor WS. por ejemplo:ws://10.12.23.45:5641/server.php
. y sé que es una muy mala solución, aunque a mí me funciona. Agradecería su ayuda si me guiara a través de la configuración de apache. por ejemplo: donde poner el.cert
etc. gracias!1 advertencia adicional (además de la respuesta de kanaka / peter): si usa WSS y el certificado del servidor no es aceptable para el navegador, es posible que no obtenga ningún cuadro de diálogo del navegador (como sucede con las páginas web). Esto se debe a que WebSockets se trata como un "subrecurso" y el certificado acepta / excepción de seguridad / cualquier cuadro de diálogo que no se represente para los subrecursos.
fuente
alert()
?