web-dev-qa-db-ja.com

SSLを使用したhtml5 Websocket

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

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

ありがとうございました

105
Eric

WebSocket接続は、HTTPまたはHTTPSハンドシェイクで開始されます。ページがHTTP経由でアクセスされる場合、WSまたはWSS(WebSocketセキュア:WS over TLS)を使用できます。ただし、HTTPSを介してページが読み込まれる場合、WSSのみを使用できます。ブラウザはセキュリティを「ダウングレード」することを許可しません。

158
Peter Moskovits

HTTPSを介してWebSocketsを使用することはできませんが、TLSを介してWebSocketsを使用することはできます(HTTPSはHTTP over TLSです)。 URIで「wss://」を使用するだけです。

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

28
kanaka

1つの追加の警告(kanaka/peterによる答えに加えて):WSSを使用し、サーバー証明書がブラウザーで受け入れられない場合、ブラウザーレンダリングされたダイアログ(Webの場合のように)ページ)。これは、WebSocketがいわゆる「サブリソース」として扱われ、証明書が受け入れられる/セキュリティ例外/サブリソースに対して表示されないダイアログがあるためです。

21
oberstet