動作しているWebSocketの安全でないアプリケーションがあります。しかし、私のWebサイトはhttpsを使用しており、Firefoxが接続が安全でないという事実について不平を言うのを避けるために、安全なWebSocket接続が必要です。
PhP 5.2.9のWebSocketサーバーにphp-websocket-serverを使用しているため、WebSocketセキュアを使用すると、openssl_decrypt関数でパケットを復号化できません。
そのため、wssを使用してクライアントから送信されたパケットを復号化するためにstunnelを使用しました。これを行うには、クライアントWebSocketを12345ポートにバインドし、サーバーWebSocketを54321ポートにバインドしてから、サーバーモードでstunnelを追加しました。
[wsServer]
accept = 12345
connect = 192.168.1.227:54321
この構成では、私のアプリケーションはhttps+wssを介してChromeで正常に動作します。しかし、Firefoxでは、ハンドシェイク中に問題が発生し、ヘッダーにSec-WebSocket-Version
とSec-WebSocket-Key
が欠落しているようです。http + wsを介してFirefoxで動作するため、わかりません。
よろしくお願いします。
編集:ポート12345に証明書の例外を追加しましたが、Firefoxにが追加されたと思うので、ハンドシェイクはうまくいきますSec-WebSocket-Key
。
ここでは、Firefoxで機能するヘッダーリクエスト(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