Est-il possible d'avoir des WebSockets avec HTTPS?
Lors du passage à HTTPS, mon WebSocket renvoie une erreur de sécurité et fonctionne parfaitement avec HTTP standard.
Ci-dessous, un extrait;
socket = new WebSocket("ws://my_www:1235");
Est-il possible d'avoir des WebSockets avec HTTPS?
Lors du passage à HTTPS, mon WebSocket renvoie une erreur de sécurité et fonctionne parfaitement avec HTTP standard.
Ci-dessous, un extrait;
socket = new WebSocket("ws://my_www:1235");
Réponses:
La connexion WebSocket commence sa vie par une négociation HTTP ou HTTPS. Lorsque la page est accessible via HTTP, vous pouvez utiliser WS ou WSS (WebSocket secure: WS over TLS). Cependant, lorsque votre page est chargée via HTTPS, vous ne pouvez utiliser que WSS - les navigateurs ne permettent pas de «rétrograder» la sécurité.
Vous ne pouvez pas utiliser WebSockets sur HTTPS, mais vous pouvez utiliser WebSockets sur TLS (HTTPS est HTTP sur TLS). Utilisez simplement "wss: //" dans l'URI.
Je pense que la version récente de Firefox ne vous permettra pas d'utiliser des WebSockets non-TLS à partir d'une page HTTPS, mais l'inverse ne devrait pas être un problème.
wss://
à ws://
. Donc, j'utilise wss://ws.domain.com
et apache j'applique le proxy dessus et redirige la demande là où le serveur WS est en cours d'exécution. par exemple: ws://10.12.23.45:5641/server.php
. et je sais que c'est une très mauvaise solution - bien que cela fonctionne pour moi. J'apprécierais votre aide si vous me guidez à travers la configuration d'Apache. par exemple: où mettre le .cert
etc. merci!
1 mise en garde supplémentaire (en plus de la réponse de kanaka / peter): si vous utilisez WSS et que le certificat de serveur n'est pas acceptable pour le navigateur, vous ne pouvez pas obtenir de dialogue rendu par le navigateur (comme cela se produit pour les pages Web). Ceci est dû au fait que WebSockets est traité comme une soi-disant «sous-ressource» et que les dialogues d'acceptation de certificat / d'exception de sécurité / quels que soient les dialogues ne sont pas rendus pour les sous-ressources.
alert()
?