Как отладить Safari, не подключившись к защищенному WebSocket - PullRequest
9 голосов
/ 25 октября 2010

При выполнении new WebSocket('ws://server/'); Safari подключается нормально, но при использовании new WebSocket('wss://server/'); он полностью завершается ошибкой (возвращает объект null).Хуже того, он молча завершается сбоем - никаких ошибок при трассировке (пользовательский веб-сервер Eventlet) или в консоли ошибок в Safari.

Chrome отлично работает как с безопасным, так и с незащищенным хостом.

Как мне отладить или исправить это?У Google очень мало информации.

Вот некоторые следы запуска OpenSSL вместо сервера WebSockets и наблюдения за тем, что происходит.Во-первых, вот отладочный вывод Chrome (который работает):

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

, а вот Safari (который не работает):

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 есть проблема с нашимисертификаты, но они не раскрываются при использовании обычного HTTP.

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Суетливость системного администратора выявила исправление: установка OpenSSL на SSLv3 по умолчанию убивает Safari, но если он выберет свою собственную версию SSL (all), то это прекрасно.

1 голос
/ 25 октября 2010

Там, где я видел это, это означает, что с сертификатом что-то не так (истек срок действия, неверный домен и т. Д.). Попробуйте подключиться напрямую к серверу WebSockets из Safari, т.е. https://wss_server:wss_port/. Safari должен дать вам лучшее сообщение об ошибке таким образом.

Когда у меня возникла эта проблема при разработке wsproxy как части noVNC (клиент HTML5 VNC), оказалось, что я использовал IP для сервера, но сертификат был подписан для имени хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...