Ho un'applicazione WebSocket non sicura funzionante. Ma il mio sito web utilizza https e ho bisogno di una connessione Secure WebSocket per evitare che Firefox si lamenti del fatto che la connessione non è sicura.Secure WebSocket (wss: //) non funziona su Firefox
Sto usando php-websocket-server per il mio server WebSocket con PhP 5.2.9, quindi quando uso WebSocket sicuro non posso decrittografare i pacchetti con la funzione openssl_decrypt.
Ecco perché ho usato stunnel al fine di decifrare i pacchetti inviati dal cliente utilizzando WSS, per farlo ho binded WebSocket cliente ad 12345 porta di un server WebSocket a 54321 porto, poi ho aggiunto uno stunnel in modalità server:
[wsServer]
accept = 12345
connect = 192.168.1.227:54321
Con questa configurazione la mia applicazione funziona bene su Chrome tramite https + WSS. Ma su Firefox c'è un problema durante l'handshake, sembra che nell'intestazione manchino Sec-WebSocket-Version
e Sec-WebSocket-Key
. Non capisco perché funziona su Firefox tramite http + ws.
Grazie in anticipo per il vostro aiuto.
Modifica: ho aggiunto un'eccezione per il certificato sulla porta 12345, ora la stretta di mano sta andando bene perché penso che Firefox ora abbia lo Sec-WebSocket-Key
.
Qui la richiesta di intestazione lavorare con Firefox (più grande di richiesta Chrome):
GET/HTTP/1.1
Host: 192.168.1.227:12345
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive, Upgrade
Sec-WebSocket-Version: 13
Origin: https://192.168.1.227
Sec-WebSocket-Protocol: HyBi-00
Sec-WebSocket-Key: 65nHN33M6drIPjQHcGK8pA==
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Se si riesce a mostrare le intestazioni effettive/strette di mano in entrambe le direzioni per la lavorazione e il caso non lavoro mi può probabilmente identificare rapidamente quale sia il problema. – kanaka