Как отладки Safari молча не подключится к безопасному Websocket

StackOverflow https://stackoverflow.com/questions/4014055

Вопрос

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

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

Как бы я пошел от отладки или исправления этого? Google очень короткий на информации.

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

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

И вот сафари (который не работает):

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.

Это было полезно?

Решение

Sysadmin Hiddling выявил исправление: настроить OpenSSL для SSLv3 По умолчанию убивает Safari, но позволяя ему выбрать свою собственную версию SSL (all) работает отлично.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top