webentwicklung-frage-antwort-db.com.de

html5 Websocket mit SSL

Ist es möglich, WebSockets mit https zu haben? Beim Wechsel zu https gibt mein WebSocket einen Sicherheitsfehler zurück und funktioniert einwandfrei mit normalem http ...

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

Vielen Dank

105
Eric

Die WebSocket-Verbindung beginnt ihre Lebensdauer mit einem HTTP- oder HTTPS-Handshake. Wenn über HTTP auf die Seite zugegriffen wird, können Sie WS oder WSS (WebSocket Secure: WS über TLS) verwenden. Wenn Ihre Seite jedoch über HTTPS geladen wird, können Sie nur WSS-Browser verwenden, mit denen die Sicherheit nicht "herabgestuft" werden kann.

158
Peter Moskovits

Sie können WebSockets nicht über HTTPS verwenden, aber Sie können WebSockets über TLS verwenden (HTTPS ist HTTP über TLS). Verwenden Sie einfach "wss: //" in der URI.

Ich glaube, dass die neueste Version von Firefox nicht zulässt, dass Sie Nicht-TLS-WebSockets von einer HTTPS-Seite verwenden, aber das Gegenteil sollte kein Problem sein.

28
kanaka

1 zusätzliche Einschränkung (neben der Antwort von kanaka/peter): Wenn Sie WSS verwenden und das Serverzertifikat für den Browser nicht akzeptabel ist, erhalten Sie möglicherweise nicht ein vom Browser gerenderter Dialog (wie es für das Web geschieht) Seiten). Dies liegt daran, dass WebSockets als sogenannte "Subressource" behandelt wird und Zertifikatsakzeptanz/Sicherheitsausnahme/welche Dialoge auch immer nicht für Subressourcen gerendert werden.

21
oberstet