2012-07-12 8 views
4

J'ai lu que Websocket (sécurisé) utilisent les mêmes ports que le protocole HTTP (S). Cependant, mon serveur PHP Websocket Server reçoit une poignée de main cryptée des clients, j'écoute des connexions ouvertes sur le port 12345.Utiliser Websocket sécurisé avec PHP - Handshake crypté

Mon système fonctionne bien via une connexion Web non sécurisée, mais je dois ajouter la fonction de sécurité et je ne comprends pas pourquoi je reçois ces poignées de main cryptées. Ce serait transparent pour moi grâce au modèle OSI ...

Si je configure apache pour activer le moteur SSL et écouter sur le port 12345. Je ne serai pas en mesure d'utiliser ce port à nouveau pour mon serveur PHP Websocket car il sera alors à l'état « déjà utilisé » ... ou je l'ai oublié quelque chose ...

Je suis perdu :(

EDIT:

Voici ma tête WebSocket sécurisé (en utilisant wss://):

Request URL:wss://localhost:12345/

Et voici ma tête simple websocket (en utilisant ws://):

Request URL:ws://localhost:12345/ Request Method:GET Status Code:101 Switching Protocols Request Headersview source Connection:Upgrade Host:localhost:12345 Origin:http://localhost Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:wovBDvKiKdy/+0Y2BQPr9w== Sec-WebSocket-Version:13 Upgrade:websocket (Key3):00:00:00:00:00:00:00:00 Response Headersview source Connection:Upgrade Sec-WebSocket-Accept:1ao7ngQG4LAa3JxFibyvoocbSAM= Upgrade:websocket (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

Pourquoi obtenir plus sans connexion sécurisée?

+0

duplication possible de [html5 Websocket avec SSL] (http://stackoverflow.com/questions/9745249/html5-websocket-with-ssl) –

+0

J'ai déjà vu ce post et non, ce n'est pas un doublon =) – Rodolf

+0

Non, cela répond à votre question. Si votre socket est ouverte avec 'ws: //', ce sera une socket standard. si c'est 'wss: //', ce sera un socket SSL. –

Répondre

2

Je l'ai lu (sécurisé) Websocket utilisent les mêmes ports que le protocole

HTTP (S)

Par défaut, oui - mais vous pouvez remplacer le port à la fois via l'URL, pensez à:

http://www.example.com:443/ 
https://www.example.com:8080/ 
http://www.example.com:12345/ 

Si quelque chose d'autre est déjà à l'écoute sur un port/adresse particulière, alors vous ne pouvez pas exécuter un second serveur là-bas - donc si votre serveur web est déjà à l'écoute sur le port 443 (https) vous ne serez pas en mesure de Exécutez un serveur WebSocket distinct sur le même port.

il suffit de laisser votre serveur HTTPS à 443 et exécuter le serveur ws ssl à 12345.


Je viens de voir votre dernier commentaire.

SSL ne concerne pas seulement le port sur lequel vous écoutez, le trafic est crypté. Si vous voulez gérer le trafic wss, vous avez besoin d'un serveur compatible SSL. Il existe plusieurs façons de mettre en œuvre cela dépend de la façon dont vous avez implémenté le serveur actuel.

+0

J'ai besoin des deux https: // et wss: // fe atures. Ai-je besoin de configurer le port 12345 comme le port 443 dans le fichier httpd.conf (Apache2) avec un second certificat ou celui que j'ai acheté peut être utilisé deux fois? Merci pour l'explication par la voie =) – Rodolf

+0

Vous pouvez utiliser le même certificat, si elle était moi je ne serais pas essayer d'utiliser Apache pour gérer ws/trafic WSS du tout - il y a de meilleures solutions. Quel est le meilleur dépend de ce que vous avez déjà en place, mais vous pourriez faire pire que d'avoir un regard sur https://github.com/kumina/wsproxy – symcbean

+0

Je me demandais s'il y avait un serveur php WebSocket qui pourrait déchiffrer SSL (en utilisant OpenSSL par exemple). Utiliser stunnel peut être une bonne solution car si je comprends comment cela fonctionne, je n'aurai pas à changer de serveur websocket. – Rodolf