Назад | Перейти на главную страницу

Socket.io Flashsockets через HTTPS

Мы пытаемся заставить Socket.io flashsockets работать в Internet Explorer 9 через HTTPS / WSS. Флэш-сокеты работают через HTTP, но HTTPS создает нам проблемы. Мы используем socket.io версии 0.8.7 и socket.io-client версии 0.9.1-1.

Мы запускаем наш сервер websocket через SSL на порт 443. Мы указали местоположение нашего файла WebsocketMainInsecure.swf (это междоменные запросы ws) в правильном месте, и мы загружаем файл во встраиваемый swfobject. через HTTPS.

Мы открыли порт 843 в нашей группе безопасности для нашего экземпляра EC2, и файл политики перекрестного происхождения успешно обрабатывается через HTTP. Кажется, что он не отображается через HTTPS (Chrome выдает ошибку SSL-соединения).

Мы пробовали две версии файла WebsocketMainInsecure.swf. Первый - это файл, предоставленный Socket.io, который построен на основе WebsocketMainInsecure.as и не включает строку

Security.allowInsecureDomain("*");

Это вызывает ошибку SCRIPT16389: Unspecified error. на WebSocket.__flash.setCallerUrl(location.href) линия.

Мы решили, что это произошло из-за того, что SWF-файл не разрешал HTTPS-запросы, поэтому мы заменили файл WebSocketMainInsecure.swf тем, который был найден в этом репозитории: https://github.com/gimite/web-socket-js потому что он включает

Security.allowInsecureDomain("*");

в коде ActionScript. Когда мы использовали это, мы увидели, что соединение flashsocket продолжало отключаться и повторно подключаться в бесконечном цикле. Мы отследили ошибку до файла transport.js в библиотеке socket.io в функции onSocketError прототипа транспорта. Выдает ошибку:

[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]

Мы предполагаем, что эта ошибка может быть каким-то образом связана с нашими сертификатами поддоменов ssl с подстановочными знаками, но мы не уверены.

Мы даже пытались обновить и socket.io, и socket.io-client до версии 0.9.6, но по-прежнему получали ошибку «Доступ запрещен».

Эту ошибку было очень трудно отладить, и теперь мы не знаем, как заставить работать flashsockets. Нам интересно, может ли это быть связано с использованием более старой версии socket.io, или, может быть, наш файловый сервер политики не принимает запросы HTTPS, или, может быть, даже способ, которым файл WebSocketMainInsecure.swf из Интернета- Репозиторий socket-js на github был построен в соответствии с ожиданиями socket.io-client.

Любая помощь приветствуется!

Похоже, что он прошел мимо элементов управления XSS, и, предположительно, ошибка SSL выглядит так, как будто ваш клиент websocket не подключается к веб-узлу SSL.

Проверьте свой веб-сокет SSL, используя: openssl s_client -connect servername:websocketport

Вы должны увидеть дамп сертификатов SSL и указать, доверено ли оно. Вы также можете запустить запрос, если знаете, как реплицировать свой клиент websocket.

Кроме того, используйте Wireshark / Tcpdump, чтобы проверить, какие порты открываются. Дамп из раздела «Сеть» и консоли из инструмента разработчика Chrome может оказаться полезным.