Die einschlägigen Foren sind voller (Halb-)Wissen zu TLS-Verbindungen und Zertifikaten. Trotzdem (oder gerade deswegen ?) habe ich Tage damit verbracht, eine verschlüsselte lokale Kommunikation mit smartVISU funktionsfähig aufzusetzen. "Lokal" bedeutet hier, dass ein selbstsigniertes Zertifikat benötigt wird und eben kein z.B. von Letsencrypt signiertes Zertifikat für eine DynDNS vorliegt. Mehrfach war ich kurz davor, aufzugeben
.
Um Euch dieses Schicksal zu ersparen, hier mal eine kleine Doku für den Apache Webserver. Wer möchte, kann dies gerne für nginx ergänzen.
Gruß
Wolfram

Um Euch dieses Schicksal zu ersparen, hier mal eine kleine Doku für den Apache Webserver. Wer möchte, kann dies gerne für nginx ergänzen.
- Selbstsigniertes Zertifikat erstellen:
Dies ist hier gut beschrieben. Für den "Common Name" geben wir anstelle "localhost" die IP-Adresse des Webservers (i.d.R. der Raspberry, auf dem smartVISU läuft) an.
. - Apache konfigurieren:
Wie im oben verlinkten Blog beschrieben, wird das ssl-Modul aktiviert, und die ports.conf ergänzt. Die Datei für den virtual host benennen wir abweichend "html-ssl.conf". Diese muss folgenden korrigierten Code enthalten:
Code:<virtualhost *:443> DocumentRoot /var/www/html ErrorLog /var/www/html/log/error.log CustomLog /var/www/html/log/access.log combined SSLEngine on SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key SSLCertificateFile /etc/apache2/ssl/sslcert.crt <directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </directory> </virtualhost>
Code:sudo a2ensite html-ssl
Code:sudo systemctl restart apache2
. - Websocket Protokoll wss:// aktivieren:
Die beiden Dateien "sslcert.key" und "sslcert.crt" aus Punkt 1 werden in das Verzeichnis "/usr/local/smarthome/etc" kopiert. Von der .crt-Datei muss die Endung in .cer geändert werden. Dann wird im gleichen Verzeichnis die module.yaml editiert, um das Websocket-Modul zu konfigurieren:
Code:websocket: module_name: websocket # ip: 0.0.0.0 port: 2424 tls_port: 2425 use_tls: true tls_cert: sslcert.cer tls_key: sslcert.key
In der Konfiguration der smartVISU ist bei smarthomeNG vor die IP-Adresse "wss://" zu setzen (Beispiel: "wss://192.168.2.12") und der TLS-Port des Websocket-Moduls einzugeben (hier "2425").
Ab hier bekommt der Edge-Browser bereits Daten vom Websocket (Chrome vermultlich auch), Firefox weigert sich aber hartnäckig, das selbstsignierte Zertifikat auch für den Websocket zu akzeptieren. Hierzu gibt man in der Browser-Zeile im Fall des Beispiels
Code:https://192.168.2.12:2425
.
Gruß
Wolfram
Kommentar