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
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):
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
ws
à un noeud final https
, vous obtiendrez l'erreur SecurityError: l'opération n'est pas sécurisée.
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.
Si vous voulez utiliser wss
:
https://...
): "le déclassement de la sécurité" n'est pas autoriséSi vous voulez utiliser ws
:
http://...
)