2012-03-16 15 views
88

httpsでWebSocketを使用することはできますか? httpsに切り替えるときに、私のWebSocketは、セキュリティエラーを返し、通常のhttpで完璧に動作...html5 Websocket with SSL

socket = new WebSocket("ws://my_www:1235"); 

はあなたがHTTPS経由でのWebSocketを使用することはできませんが、あなたは(TLS上でのWebSocketを使用することができますあなたの

+0

私の使用しているAIRソケットサーバーが安全でないことがわかりました。私はflash.net.SecureSocketを使用するように書き直す必要があります... – Eric

答えて

131

WebSocketの接続は、HTTPまたはHTTPSハンドシェイクで終了します。 HTTP経由でページにアクセスするときは、WSまたはWSS(WebSocket secure:WS over TLS)を使用できます。しかし、あなたのページがHTTPS経由でロードされている場合は、WSSのみを使用できます。ブラウザはセキュリティを「ダウングレード」できません。

+0

それは私が持っているものですが、私は使用しているAIRソケットサーバーが安全でないことに気付きました。私はflash.net.SecureSocketを使用するように書き直す必要があります... – Eric

+0

Flashにも深刻な問題があります。 WebSocketサーバー(あれば)、またはアプリケーションを構築していますか? –

+0

私はyesを実行しているAIRソケットサーバーを持っています。 – Eric

19

ありがとうございましたHTTPSはTLS上のHTTPです)。 URIで "wss://"を使用するだけです。

Firefoxの最近のバージョンでは、HTTPSページから非TLS WebSocketを使用することはできませんが、その逆は問題ではないはずです。

+0

だから、何が解決策ですか?私はHTTP上で動作しているWSサーバーを持っていました.SSLとブラウザを購入しても、WSに接続することはできません。私はWSをWSS://にしました.WebSocketに接続していません – muaaz

+0

@muaaz WebSocketサーバーはWSSモードで動作していて、試している元のWebページを提供しているWebサーバーと同じSSL証明書/キーがロードされている必要がありますwebsocketサーバーに接続します。 – kanaka

+2

ありがとうございます。 btw、私はちょうど 'wss://'から 'ws://'へのリクエストを(Apacheを使って)Proxyingで解決しました。だから、私は 'wss:// ws.domain.com'を使い、その上でプロキシを適用し、WSサーバが稼働している場所にリクエストをリダイレクトします。例: 'ws://10.12.23.45:5641/server.php'。私は非常に悪い解決策を知っています - しかし、それは私のために働く。私はあなたがApacheの設定を通して私を導くなら、あなたの助けに感謝します。例: '.cert'などを置く場所 – muaaz

17

その他の注意点(kanaka/peterの回答に加えて):WSSを使用していて、サーバー証明書がブラウザに受け入れられない場合、ブラウザでダイアログを表示しない可能性があります。 )。これは、WebSocketsがいわゆる "サブリソース"として扱われ、証明書の受け入れ/セキュリティ例外/サブリソース用にレンダリングされないダイアログがあるためです。

+0

HTTPSで使用されている証明書と同じ証明書でも、 – vekah

+1

「ブラウザで表示されるダイアログ」とはどういう意味ですか? 'alert()'と似ていますか? –

+1

ブラウザ内でネイティブに発生するダイアログ(ページではない)。 「この証明書は無効です」のように、続行しますか? – oberstet