Разница между ws и wss?
какова процедура изменения ws в wss?
является ли wss обновлением по обычному HTTP или wss работает только HTTPS?
webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
отлично работает, когда я изменил ws на wss
webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
он показывает эту ошибку:
ошибка в установлении соединения: net:: ERR_SSL_PROTOCOL_ERROR
1 ответов
короткая версия
SSL или нет SSL
вы можете выдача сертификата SSL. Правило точки соединения может быть кратко охарактеризовать как:
-
wssсоединяется сhttps only -
wsсоединяется сhttp
и наоборот:
-
httpsпринимаетwss only -
httpпринимаетws only
ошибки
следующие ситуации приведут вас к ошибке (тесты, выполненные в Firefox):
- если вы хотите подключить
wssподключение кhttpконечной точки. В моих тестах у меня былInvalidStateError: An была предпринята попытка использовать объект, который не используется или больше не используется
- если вы хотите подключить
wsподключение кhttpsendpoint, у вас будет ошибкаSecurityError: операция небезопасна.
формальный ответ
Библия websocket является RFC 6455. В разделе 4.1.5:
если / secure/ верно, клиент должен выполнить рукопожатие TLS по соединению после открытия соединения и перед отправкой данных рукопожатия [RFC2818]. Если это не удается (например, сертификат сервера не может быть проверен), то клиент должен сбой подключения WebSocket и прервать соединение. В противном случае вся дальнейшая связь по этому каналу должна проходить через зашифрованный туннель [RFC5246].
в безопасное флаг определяется URI. Раздел 3 определяет, что является безопасное
URI называется " secure "(и говорится, что" флаг secure установлен"), если компонент схемы соответствует" WSS " без учета регистра.
TL; DR
если вы хотите использовать wss:
- у вас должен быть активирован SSL
- ваша конечная точка должна быть защищена (
https://...): "безопасность понижение рейтинга " не допускается
если вы хотите использовать ws:
- убедитесь, что ваша конечная точка не имеет SSL включен (
http://...)