web-dev-qa-db-fra.com

Différence entre ws et wss?

Quelle est la procédure pour changer ws en wss?

Que wss fasse make upgrade sur HTTP normal ou que wss ne fonctionne qu'avec HTTPS?

webSocket = new WebSocket("ws://localhost:port/Esv/ocp");

fonctionne bien, quand j'ai changé ws en wss

webSocket = new WebSocket("wss://localhost:port/Esv/ocp");

cela montre cette erreur:

Erreur lors de l'établissement de la connexion: net :: ERR_SSL_PROTOCOL_ERROR

25
mahe

Version courte

Vers SSL ou non SSL

Vous pouvez avoir un problème de certificat SSL . La règle du point de connexion peut être résumée comme :

  • wss se connecte sur https only
  • ws se connecte sur http

et inversement:

  • https accepte wss only
  • http accepte ws only

Erreurs

Les situations suivantes vous mèneront à une erreur (tests effectués sous Firefox):

  • Si vous souhaitez connecter une connexion wss à un noeud final http. Lors de mes tests, j'avais un

    InvalidStateError: Une tentative d'utilisation d'un objet qui n'est pas ou n'est plus utilisable a été effectuée

  • Si vous souhaitez connecter une connexion ws à un noeud final https, vous obtiendrez l'erreur

    SecurityError: l'opération n'est pas sécurisée.

Réponse formelle

La bible de websocket est RFC 6455. Dans la section 4.1.5 :

Si /secure / est vrai, le client DOIT effectuer une négociation TLS sur la connexion après avoir ouvert la connexion et avant d'envoyer les données de négociation [RFC2818]. Si cela échoue (par exemple, le certificat du serveur ne peut pas être vérifié), le client DOIT Faire échouer la connexion WebSocket et abandonner la connexion. Sinon, toute communication ultérieure sur ce canal DOIT passer par le tunnel crypté [RFC5246].

L'indicateur sécurisé est défini par l'URI. La section 3 définit ce qui est sécurisé

L'URI est appelé "sécurisé" (et on dit que "l'indicateur sécurisé est défini") si le composant schéma correspond à "wss" sans distinction de casse.


TL; DR

Si vous voulez utiliser wss:

  • vous devez avoir SSL activé
  • votre point final doit être sécurisé (https://...): "le déclassement de la sécurité" n'est pas autorisé

Si vous voulez utiliser ws:

  • Assurez-vous que SSL n'est pas activé sur votre ordinateur d'extrémité (http://...)
40
Al-un