Mein schlechtes, ich habe festgestellt, dass der AIR-Socket-Server, den ich verwende, nicht sicher ist. Ich muss neu schreiben, um flash.net.SecureSocket zu verwenden ...
Eric
Antworten:
170
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.
Das ist, was ich habe, aber ich habe festgestellt, dass der AIR-Socket-Server, den ich verwende, nicht sicher ist. Ich muss neu schreiben, um flash.net.SecureSocket zu verwenden ...
Eric
Flash hat auch schwerwiegende Probleme ... Erstellen Sie einen WebSocket-Server (wenn ja, warum) oder erstellen Sie eine App?
Peter Moskovits
1
Ich habe einen AIR-Socket-Server, auf dem ja läuft.
Eric
Wie wähle ich WSS aus, wenn die Seite nicht mit HTTP geladen ist?
Anatoly Techtonik
29
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.
Also, was ist die Lösung? Ich habe einen WS-Server, der über http läuft. Ich habe ein SSL gekauft und der Browser erlaubt mir nicht mehr, eine Verbindung mit WS herzustellen. Ich habe WS auf WSS: //
umgestellt
@muaaz Ihr WebSocket-Server sollte im WSS-Modus ausgeführt und vorzugsweise mit denselben SSL-Zertifikaten / Schlüsseln geladen werden wie Ihr Webserver, der Ihre ursprünglichen Webseiten bedient, die versuchen, eine Verbindung zum Websocket-Server herzustellen.
Kanaka
4
Danke dir. Übrigens habe ich es gerade gelöst, indem ich die Anfrage von wss://bis (mit Apache) proxiert habe ws://. Also verwende wss://ws.domain.comund 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 .certetc. hinstellen danke!
Muaaz
@muaaz sorry, ich kenne die Apache-Konfiguration nicht, außer sie selbst zu googeln.
Kanaka
21
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.
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.
quelle
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.
quelle
wss://
bis (mit Apache) proxiert habews://
. Also verwendewss://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.
quelle
alert()
?