Разница между 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 подключение к https endpoint, у вас будет ошибка

    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://...)