Client-Server Kommunikation mit https & wss mit selbst signiertem Zertifikat?

mdrmdr

Cadet 3rd Year
Registriert
Mai 2015
Beiträge
58
Hallo,

ich bin gerade dabei auf Basis eines Raspberry eine Rollladensteuerung zu bauen. Der PHP-Server für die eigentliche Steuerung der Hardware und der Apache2 für den Client (PHP & Javascript) laufen auf dem Pi.

Ich benutze für die Kommunikation zwischen dem Web-Client und dem Server Websockets. Um dies sicher zu gestalten möchte ich https für die HTML-Seite und dann aber auch wss für die Websocket Kommunikation verwenden.
Ich habe mir dazu eine eigene CA (Certificate Authority) und ein mit dieser CA selbst signiertes Zertifikat mit openssl erstellt. Die reine Website funktioniert damit gut über https.

Aber, Websockets verschlüsselt über wss gehen nicht :heul:

Es geht nur in der Kombination http & ws (in allen Browsern) oder https & ws (nur in Firefox und nur mit der Einstellung in about:config: "network.websocket.allowInsecureFromHTTPS = true".
Weder in Safari/iOS (wäre mir am wichtigsten) oder Chrome oder FF geht es mit wss.

Ohne die o.g. Config in FF und mit ws kommt die Meldung "SecurityError: The operation is insecure" Mit wss kommt nur die nichtssagende Meldung "Created! Status 0", (1 wäre Erfolg) und die Kommunikation geht einfach nicht.

Ich vermute es liegt am selbst signierten Zertifikat.

Wer weiß Rat bzw. hat https & wss zusammen schon einmal zum Laufen gebracht? Brauche ich doch ein "echtes" Zertifikat einer anerkannten CA?

Danke und Grüße
mdrmdr
 
Hallo mdrmdr,

mdrmdr schrieb:
Es geht nur in der Kombination http & ws (in allen Browsern) oder https & ws (nur in Firefox und nur mit der Einstellung in about:config: "network.websocket.allowInsecureFromHTTPS = true".
Weder in Safari/iOS (wäre mir am wichtigsten) oder Chrome oder FF geht es mit wss.

Das ist auch korrekt so. Die Kombination HTTPS und WS wird auch nicht erlaubt, da es ein "Downgrade" der Verschlüsselung darstellt. Deshalb öffnest du in der Firefox-Config ja auch "allowInsecureFromHTTPS".
Wenn dann musst du HTTPS & WSS (WS over TLS) - "wss://example.com" nutzen.

Ein selbst-signiertes Zertifikat ist hier natürlich vollkommen in Ordnung, dazu benötigst du auch keines einer anerkannten CA (die bist in dem Fall du!). Im Browser kannst du dein Root-Zertifikat hinterlegen, falls du die Warnungen nicht mehr sehen möchtest ;-)

lg, Michael
 
Zurück
Oben