HTTPS Zugriff ohne Nachfrage des Browsers

Begonnen von mabula, 07 April 2021, 09:47:40

Vorheriges Thema - Nächstes Thema

mabula

Anbei eine Beschreibung zur Erstellung von selbst signierten Zertifikaten für den WEB Zugriff über https ohne Fehlermeldung und Nachfrage mit Hilfe eines einfachen PERL Programms. Das Programm erstellt einmalig ein root-Zertifikat mit root-Schlüssel (wenn sie nicht gelöscht werden) und beliebige damit signierte Zertifikate, auch mehrmals. Über PERL kann kein Passwort vergeben werden (zumindest habe ich nichts gefunden), daher muss der root-Schlüssel unbedingt vor fremdem Zugriff geschützt werden. Am besten erstellt man auf einem übrigen USB Stick ein Subdirectory und kopiert das Perl Programm dorthin und führt die entsprechen Einstellungen (gekennzeichnet mit XXX) im Programm mit einem Editor durch. Sinnvolle Bezeichnungen helfen, das Zertifikat später wieder zu erkennen. Root-Zertifikat/-Schlüssel wird nur einmal erstellt, denn es muss mit einigem Aufwand auf allen Systemen, die auf den WEB Server zugreifen wollen installiert werden.
Auf einem Linux oder Raspbian System ein Terminal in diesem Directory öffnen und das Programm durchführen. Danach befinden sich die Zertifikate root/FHEM/Fritzbox als .pem im Directory. Diese Files sind im ASCII Format. Für das root-Zertifikat wird aber meist die binäre Version benötigt.
Bitte mit folgenden Befehl die binäre Datei erstellen:

openssl x509 -inform PEM -outform DER -in root-ca.pem -out root-ca.crt

Die Datei root-ca.crt muss jetzt auf alle Systeme verteilt werden:

FIREFOX (Windows/Linux) Firefox hat einen eigenen Zertifikatspeicher, zu erreichen über

Firefox: Einstellungen -> Datenschutz und Sicherheit -> Zertifikate -> Zertifikate anzeigen, dann unter Reiter Zertifizierungsstellen das root Zertifikat importieren, Häckchen setzen fertig.

FIREFOX (Android) hier kann kein eigenes Zerfifikat im Firefox Speicher installiert werden. Einzige Möglichkeit, Wechsel zu Firefox beta, hier kann man mit about:config die Konfiguration so ändern, dass Firefox auf System-Zertifikate zugreift.

Firefox beta: about:config eingeben und dann die Varibale "security.enterprise_roots.enabled" auf true setzen, fertig

Für Betriebssystem nahe Browser muss das Zertifikat im System direkt integriert werden.

Linux: Das root-Zertifikat (root-ca.crt) wird nach "/usr/local/share/ca-certificates" kopiert und dann wird der Befehl
sudo update-ca-certificates
ausgeführt.

Windows: Einstellungen -> Update und Sicherheit -> Netzwerk und Internet -> Netzwerk- und Freigabecenter -> Internetoptionen (unten links). Dort auf Reiter Inhalte -> Zertifikate und dann das root-Zertifikat (root-ca.crt) unter dem Ordner "Vertrauenswürdige Stammzertifizierungsstellen" importieren. Fertig

Android: Zugriff auf die Datei root-ca.crt über z.B. Netzlaufwerk oder sich selbst eine e-mail schicken. Die Datei root-ca.crt anklicken, dann öffnet sich der Zertifikatsmanager, Häckchen setzen und importieren. Fertig
Ergänzung
Android 11: Einstellungen -> Sicherheit -> Erweitert -> Verschlüsselung und Anmeldung -> Ein Zertifikat installieren -> CA-Zertifikat  das root-ca.crt auswählen. Fertig

IOS: Habe ich leider nicht.

Nun muss das FHEM Zertifikat und Schlüssel im Ordner "/opt/fhem/certs" ersetzt werden.

Wer will kann noch das Fritzbox Zertifikat (Zertifikat und Schlüssel sind hier in einem File zusamengefasst) auf der Box installieren.

Mögliche Meldungen:
Android: Zieht man im Startbildschirm die Einstellungen nach unten kommt die Meldung "Das Netzwerk wird eventuell überwacht". Dies wird durch das root-Zertifikat verursacht. Solange der root-Schlüssel geschützt ist, stellt das kein Problem dar. Man ist halt keine offizielle Zertifizierungsstelle.

FHEM: Nach einem restart von FHEM oder schließen der Firefox App und wieder öffnen mit definiertem FHEM Reiter, erscheint folgende LOG-Meldung mehrfach:
"..... FHEMWEB SSL/HTTPS error:  SSL accept attempt failed (peer: ...... "
Die Synchronisation zwischen Server und Client bzgl. der Verschlüsselung geht verloren und bedarf mehrerer Versuche bis die Verschlüsselung wieder ausgehandelt ist und bei jedem Versuch kommt diese Meldung. Also einfach ignorieren.
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

rudolfkoenig

Zu diesem Thema: TcpServerUtils.pm (verwendet von FHEMWEB, telnet, MQTT2_SERVER, etc) erstellt beim gesetzten HTTPS/SSL Attribut und fehlen von einem Zertifikat automatisch ein selbstsigniertes Zertifikat, falls openssl auf dem Rechner vorhanden ist.

mabula

Ich vermute eher, dass Firefox den disconnect nicht richtig erkennt. Durch restart von Fhem wird ja alles neu aufgebaut und bei Neuaufruf von FHEMWEB mit meinem Zertifikat gibt es keine Meldungen.
Gruß HJB
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

rudolfkoenig

Apropos Zertifikat (etwas off-topic, fuer den Fall, dass jemand sich hier auskennt :) ): ich hatte gestern in einem abgeschotteten Umfeld (kein Internet) eine Fehlermeldung von Chrome bekommen, der ein Problem mit dem "Certificate Transparency Log" bemaengelt hat. Nach Studium des Internets bin ich der Ansicht, dass das auch selbstsignierte Zertifikate betreffen muesste. Weiss jemand mehr dazu?