2010-10-25 5 views
8

Lors de Safari se connecte très bien, mais en utilisant new WebSocket('wss://server/'); échoue complètement (renvoie un objet null). Pire, il échoue silencieusement - pas d'erreurs dans traceback (un serveur web Eventlet personnalisé) ou dans la console d'erreur dans Safari.Comment déboguer Safari ne parvient pas à se connecter en toute sécurité à un WebSocket sécurisé

Chrome fonctionne correctement avec les hôtes sécurisé et non sécurisé.

Comment procéder pour le débogage ou la correction? Google est très court sur l'information.

Voici une trace de l'exécution d'OpenSSL à la place du serveur WebSockets et de voir ce qui se passe. Tout d'abord, est ici est Chrome (qui fonctionne) Sortie de débogage:

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 

et voici de Safari (qui ne fonctionne pas): Je pense

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 

Safari a un problème avec nos certificats, mais un il ne révèle pas lors de l'utilisation de HTTP régulier.

Répondre

3

Sysadmin fiddling a révélé un correctif: le réglage OpenSSL à SSLv3 par défaut tue Safari, mais en le laissant choisir sa propre version SSL (all) fonctionne très bien.

+0

Ah oui, c'était une autre chose dont je me souviens avoir eu affaire. Cependant, je suis surpris que vous n'obteniez aucun retour de votre serveur WebSockets dans ce cas. – kanaka

+0

Eh bien, il ne recevait même pas la demande, car Safari fermait la connexion immédiatement après la poignée de main. Il n'est jamais arrivé sur le serveur WebSockets. –

1

Lorsque j'ai vu cela, cela signifie qu'il y a un problème avec le certificat (expiré, domaine incorrect, etc.). Essayez de vous connecter directement au serveur WebSockets à partir de Safari, c'est-à-dire https://wss_server:wss_port/. Safari devrait vous donner un meilleur message d'erreur de cette façon. Lorsque j'ai rencontré ce problème lors du développement de wsproxy dans le cadre de noVNC (client VNC HTML5), il s'est avéré que j'utilisais une adresse IP pour le serveur, mais le certificat était signé pour un nom d'hôte.

+0

Le certificat est bon, nous pouvons nous connecter de toutes les manières. C'était un problème de configuration SSL, comme indiqué ci-dessous. –

Questions connexes