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.
Unten ein Ausschnitt;
socket = new WebSocket("ws://my_www:1235");
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.
Unten ein Ausschnitt;
socket = new WebSocket("ws://my_www:1235");
Antworten:
Die WebSocket-Verbindung beginnt ihr Leben mit einem HTTP- oder HTTPS-Handshake. Wenn auf die Seite über HTTP zugegriffen wird, können Sie WS oder WSS verwenden (WebSocket Secure: WS über TLS). Wenn Ihre Seite jedoch über HTTPS geladen wird, können Sie nur WSS verwenden - Browser erlauben kein "Downgrade" der Sicherheit.
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 Sie in der neuesten Version von Firefox keine Nicht-TLS-WebSockets von einer HTTPS-Seite verwenden können, aber das Gegenteil sollte kein Problem sein.
wss://
bis (mit Apache) proxiert habe ws://
. Also verwende wss://ws.domain.com
und apache ich den Proxy darauf und leite die Anfrage um, wo der WS-Server läuft. zB : ws://10.12.23.45:5641/server.php
. und ich weiß, dass es eine sehr schlechte Lösung ist - obwohl es für mich funktioniert. Ich würde mich über Ihre Hilfe freuen, wenn Sie mich durch die Apache-Konfiguration führen. zB: wo soll man das .cert
etc. hinstellen danke!
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, wird möglicherweise kein vom Browser gerenderter Dialog angezeigt (wie dies bei Webseiten der Fall ist ). Dies liegt daran, dass WebSockets als sogenannte "Subressource" behandelt wird und Zertifikate akzeptieren / Sicherheitsausnahme / welche Dialoge auch immer nicht für Subressourcen gerendert werden.
alert()
?