7

動作している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-VersionSec-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
4

1 に答える 1

11

自己署名証明書を使用してローカルで作業する場合は、Firefoxを使用してhttps://ポート443で実行されているサーバーとwss://ポート12345で実行されているサーバーの両方で承認する必要があります。

お使いのブラウザでは安全なWebSocket接続が許可されていないため、一部のヘッダーが欠落していると思います。

[本当に重要なので@Faisalコメントから更新]
答えは正しいですが、少し不明確です。はい、こちらです。
wss://mysite.com:12345を使用してwssを開こうとすると、別のFirefoxタブを開いて、URL [https]://mysite.comを押すまで、Firefoxはエラーを出し続けます。 12345およびセキュリティ例外の確認(httpsベースの接続に対してFirefoxで通常行うように)。
これは本当に奇妙で、Firefoxでのみ発生します。

于 2012-07-19T05:58:46.213 に答える