Pregunta

Al hacer new WebSocket('ws://server/'); Safari conecta muy bien, pero cuando se utiliza new WebSocket('wss://server/'); fracasa por completo (devuelve un objeto null). Peor aún, se produce un error en silencio -. No hay errores en el rastreo (un servidor web a medida Eventlet) o en la consola de error dentro de Safari

Chrome funciona bien tanto con el host seguro y no seguro.

¿Cómo hago para la depuración o la fijación de esto? Google es muy corto en la información.

Aquí hay alguna rastreo se ejecute OpenSSL en lugar del servidor de WebSockets y ver lo que sucede. En primer lugar, aquí es de Chrome (que funciona) la salida de depuración:

Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
SSL_accept:before/accept initialization
SSL_accept:SSLv3 read client hello A
SSL_accept:SSLv3 write server hello A
SSL_accept:SSLv3 write certificate A
SSL_accept:SSLv3 write key exchange A
SSL_accept:SSLv3 write server done A
SSL_accept:SSLv3 flush data
SSL_accept:SSLv3 read client key exchange A
SSL_accept:SSLv3 read finished A
SSL_accept:unknown state
SSL_accept:SSLv3 write change cipher spec A
SSL_accept:SSLv3 write finished A
SSL_accept:SSLv3 flush data
-----BEGIN SSL SESSION PARAMETERS-----
GIBBERISH HERE
-----END SSL SESSION PARAMETERS-----
Shared ciphers:CIPHERS_HERE
CIPHER is REDACTED
Secure Renegotiation IS supported
GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: live.redacted.com:8443
Origin: http://redacted.com
Sec-WebSocket-Key1: 1 [ B l wA 3 e60   d9[  n0!>8384
Sec-WebSocket-Key2: 2 5  1  7p 17 64 3 9
Cookie: __key=value

y de aquí de Safari (que no funciona):

ACCEPT
SSL_accept:before/accept initialization
SSL_accept:SSLv3 read client hello A
SSL_accept:SSLv3 write server hello A
SSL_accept:SSLv3 write certificate A
SSL_accept:SSLv3 write server done A
SSL_accept:SSLv3 flush data
SSL_accept:failed in SSLv3 read client certificate A
ERROR
shutting down SSL
CONNECTION CLOSED

Así que creo que Safari tiene un problema con nuestros certificados-pero uno que no revela cuando se utiliza HTTP normal.

¿Fue útil?

Solución

administrador de sistemas de tocar el violín ha revelado una solución:. OpenSSL para establecer SSLv3 por defecto mata Safari, pero dejando que recoger su versión propia de SSL (all) funciona bien

Otros consejos

¿Dónde he visto esto, significa que hay algo mal con el certificado (caducado, dominio incorrecto, etc.). Intente conectar directamente al servidor WebSockets de Safari, es decir https://wss_server:wss_port/. Safari le debe dar un mensaje de error mejor de esa manera.

Cuando tuve este problema mientras que el desarrollo wsproxy como parte de noVNC (HTML5 cliente VNC) resultó yo estaba usando una dirección IP para el servidor, sino que se firmó el certificado para un nombre de host.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top