SSL und Authentifizierung für den ioBroker Admin

Ein wichtiges und für mich unverzichtbares Thema ist die Nutzung einer Authentifikation mit Benutzernamen und Passwort für jegliche Form von administrativer Oberfläche im Smarthome. 

Nun verhält es sich aber leider so, dass nach der Installation des ioBroker gerade diese Funktion standardmäßig nicht aktiviert ist. 

In diesem Tutorial möchte ich euch deshalb zeigen, wie ihr die Authentifikation im ioBroker aktiviert und zusätzlich auch gleich die Kommunikation zwischen eurem Browser und dem ioBroker Admin verschlüsselt. Und als ob das nicht genug wäre, werden wir im zweiten Teil auch noch das ungültige Zertifikat durch ein selbst erstelltes ersetzen und damit die nervige Warnmeldung im Browser deaktivieren. 

Voraussetzungen

Wie immer gibt es ein paar Voraussetzungen die erfüllt sein sollten, damit ihr dieses Tutorial erfolgreich abschließen könnt. 

So starte ich hier z.B. mit einem frisch installierten ioBroker ohne jegliche Konfiguration und nutze als Browser Google Chrome.

Die Zertifikate für den zweiten Teil des Tutorials erstelle ich über den DiskStation Manager meiner Synology Disk Station. Wer keine Disk Station besitzt, findet Anleitungen zum Erstellen von selbst signierten Zertifikaten zur Genüge im Internet. Mein erster Google Treffer war zum Beispiel dieser hier. 🙂

Letzte, aber wichtigste Voraussetzung für den zweiten Teil des Tutorials ist, dass ihr euren ioBroker Admin über einen (lokalen) FQDN (Fully Qualified Domain Name) aufrufen könnt. Völlig ausreichend ist, wenn die Namensauflösung dabei bei euch im lokalen Netzwerk funktioniert.

Wer eine FritzBox als Router nutzt, hat hier einen Vorteil. Die FritzBox bringt einen solchen Domain Namen inklusive Namensauflösung schon standardmäßig mit. Dieser lautet „fritz.box“, sodass ihr per „[iobrokerhostname].fritz.box“ bereits auf euren iobroker zugreifen können solltet.

Wer keine Fritzbox als Router nutzt, muss sich wohl oder übel anders behelfen. Denkbar wäre da zum Beispiel ein konfigurierbarer DNS Server. Vielleicht stellt euer Router so etwas ja schon bereit?

Nun aber genug der einleitenden Worte. Starten wir mit dem ersten Schritt.

Aktivierung der Authentifizierung und SSL Verschlüsselung

Zum Einloggen an einem System benötige ich im Normalfall einen Benutzernamen sowie das zugehörige Kennwort. Da ich kein Fan von Standardkennworten bin zeige ich euch zunächst einmal wie wir unser persönliches Admin-Kennwort im ioBroker setzen.

Dazu müssen wir im ioBroker Admin zuerst den Menüpunkt „Benutzer“ aktivieren. Das machen wir über einen Klick auf das kleine Dreieck in der oberen linken Ecke der Admin Oberfläche. In dem sich öffnenden Menü können wir Menüpunkte aktivieren und deaktivieren. Wir setzen also bei bei „Benutzer“ ein Häkchen. 

Anschließend öffnen wir den Menüpunkt „Benutzer“ und können über den „Bearbeiten-Stift“ des Benutzers „admin“ unser individuelles Kennwort setzen. 

Wer möchte, kann natürlich auch noch weitere Benutzer anlegen. Das Usermanagement und die Vergabe von Berechtigungen sind aber ein ganz eigenes Thema und sollten uns hier jetzt erstmal nicht weiter beschäftigen.   

Nun sind wir bereit die eingebaute Authentifizierung zu aktivieren. Dazu wechseln wir in den Menüpunkt „Instanzen“ und öffnen über das Schraubenschlüsselsymbol die Einstellungen des Admin Adapters. 

In der sich öffnenden Registerkarte „Haupteinstellungen“ springen uns sofort die Checkboxen für Verschlüsselung und Authentifikation an. Wir checken natürlich beide. 

Hinweis

Es ist auch möglich die Authentifikation ohne Verschlüsselung zu aktivieren. Wie es in dem dann erscheinenden Hinweisfenster auch zu lesen ist, würde euer Kennwort dann von euerm Browser zum Admin unverschlüsselt übertragen. Das dies grundsätzlich ein Sicherheitsrisiko ist, sollte eigentlich jedem einleuchten. 

Nachdem die Checkbox für die Verschlüsselung aktiviert wurde, tauchen drei weitere Dropdown Felder auf. Inhalt sind hier die zu verwendenden Zertifikate. Schauen wir in die Dropdown Auswahlmöglichkeiten für das öffentliche und das private Zertifikat, so finden wir aktuell nur das ioBroker Standard Zertifikat, welches wir erst einmal jeweils auswählen. Ein verkettetes Zertifikat benötigen wir hier nicht.   

Unsere neuen Einstellungen aktivieren wir mir einem Klick auf „Speichern und Schließen“. Im Anschluss wird der Admin Adapter neu gestartet und unser Browser verliert die Verbindung.

Um die Verbindung wieder herzustellen müssen wir das Protokoll für den Aufruf der Website anpassen. Bisher haben wir den Admin ja per „http://…“ aufgerufen. Durch die Aktivierung der Verschlüsselung ändert sich das Protokoll auf „https://…“. Wir fügen also das fehlende „s“ in der Adresszeile des Browsers ein und landen auf einer Hinweisseite die wohl jeder schon einmal gesehen hat.  

Je nach Browser hat diese Seite ein etwas anderes Aussehen. Sie informiert darüber, dass die aufzurufende Seite nicht sicher ist. Dies geschieht weil der Browser das ioBroker Standard Zertifikat, welches wir im Admin aktiviert haben, nicht als gültiges Zertifikat anerkennt. Um fortzufahren müssen wir nun dem Browser bestätigen, dass das Zertifikat vertrauenswürdig ist. 

Anschließend gelangen wir auf das Loginformular des ioBroker Admin und können uns mit dem Benutzernamen „admin“ und unserem zuvor vergebenen Kennwort einloggen. Der Hinweis „Nicht sicher“ in der Adressleiste des Browsers bleibt trotz manueller Bestätigung dabei allerdings erhalten. 

Hinweis

Auch ein vom Browser als „nicht sicheres Zertifikat“ deklariertes Zertifikat ist ein Zertifikat und sorgt für eine verschlüsselte Verbindung zum ioBroker Admin. Das „Nicht sicher“ bezieht sich dabei eher darauf, dass nicht zweifelsfrei bestätigt werden kann, dass es sich bei der Website um die Website handelt, die wir aufgerufen haben. Das ist im lokalen Netz sicherlich weniger kritisch als im Internet. Daher spricht meines Erachtens auch nichts dagegen, wenn ihr mit dem Standard Zertifikat des ioBroker arbeitet, sofern es euch nur um die Verschlüsselung der Kommunikation geht.  

Eigene Zertifikate generieren

Es geht aber auch anders. Nachdem wir jetzt Authentifizierung und Verschlüsselung für den ioBroker Admin aktiviert haben zeige ich euch noch, wie ihr euch für den lokalen Einsatz relativ einfach selbst ein Zertifikat für den Admin ausstellen könnt und euren Browser dazu bringt dem Zertifikat, bzw. eurer eigenen Zertifizierungsstelle (CA), zu vertrauen.

Das im Folgenden beschriebene Vorgehen gilt im Übrigen auch nicht nur für den ioBroker. Verseht ihr euer Zertifikat mit den entsprechenden Alias, so könnt ihr es auch für andere Weboberflächen zur Administration verwenden. Etwa um auch auf die Portainer Web UI oder auf den DiskStation Manager eurer Synology DiskStation verschlüsselt zuzugreifen.  

Grundlagen zur Funktion von Zertifikaten

Damit ihr am Ende auch sagen könnt, dass ihr in diesem Tutorial wirklich etwas gelernt habt, schiebe ich hier einmal einen Absatz über die grundlegende Funktionsweise für die Prüfung von SSL-Zertifikaten im Browser ein. Ich halte die Erläuterungen mit Absicht sehr allgemein und einfach. Dies ist also keine technische Abhandlung, sondern dient schlicht dem allgemeinen Verständnis. 

Nun gut. Wir wollen also dass unser Browser eine mit SSL verschlüsselte Website (in diesem Fall den ioBroker Admin) als vertrauenswürdig einstuft und keine Warnmeldung beim Aufruf mehr ausgibt. Dazu braucht es zwei Punkte.

Zum Einen muss unsere Website beim Aufruf ein Zertifikat ausliefern, das unser Browser auf Gültigkeit prüfen kann, zum Anderen muss unser Browser Informationen darüber haben welche Zertifikate er als gültig erachten darf und welche nicht. 

Dazu ein Beispiel aus dem Internet.

Im Internet funktioniert das Ganze indem Webseitenbetreiber sich von offiziellen Zertifizierungsstellen signierte Zertifikate ausstellen lassen. Im Zertifikat enthalten sind dabei unter anderem der Name der Domain, über den die Website aufgerufen wird, das Gültigkeitsdatum des Zertifikats und die Information darüber von welcher Zertifizierungsstelle das Zertifikat ausgestellt wurde. 

Surft ihr nun auf die entsprechende Website, liefert diese ihr Zertifikat an euren Browser aus. Dieser wiederum hat eine Liste der offiziellen öffentlichen Zertifizierungsstellen und kann nun prüfen ob das Zertifikat von einer solchen vertrauenswürdigen Quelle ausgestellt worden ist. Außerdem prüft der Browser ob die aufgerufene Domain im Zertifikat enthalten und ob das Zertifikat noch gültig ist. Sind alle Checks positiv, vertraut der Browser der Website und alles ist gut. Stimmt etwas nicht, erscheint hingegen eine entsprechende Warnung.   

Doch zurück zu unserer Ausgangssituation. Da die öffentlichen Zertifizierungsstellen keine Zertifikate für unsere lokale Domain (unser lokales Netz) ausstellen, müssen wir hier selbst aktiv werden. Wir müssen also unsere eigene Zertifizierungsstelle sein und unser selbst erstelltes Zertifikat selbst als gültig anerkennen. 

Zertifikat und Zertifizierungsstelle erstellen

Wie bereits angesprochen lässt sich über eine Disk Station relativ einfach eine eigene Zertifizierungsstelle samt gültigem SSL Zertifikat erstellen. Das Ganze versteckt sich dabei in der Systemsteuerung des DiskStation Managers unter dem Punkt „Sicherheit“ auf der Registerkarte „Zertifikat“. 

Über den Button „Hinzufügen“ starten wir den Wizard zum Erstellen oder Ersetzen eines Zertifikats. Da wir ein neues Zertifikat erstellen möchten, Wählen wir den entsprechenden Punkt aus und klicken auf „Weiter“.

Im folgenden Schritt haben wir dann verschiedene Möglichkeiten. Hier wählen wir den Punkt „Selbst unterzeichnetes Zertifikat erstellen“ und klicken erneut auf „Weiter“.

Da wir unsere eigene Zertifizierungsstelle sind, müssen wir im Folgenden ein paar Angaben dazu machen. Der „Common Name“ ist dabei der Name, der später im Browser in der Liste der vertrauenswürdigen Zertifizierungsstellen erscheint. In diesem Formular müssen alle Felder ausgefüllt werden. Orientiert euch dabei gerne an meinem Vorschlag. 

Nach einem Klick auf Weiter ändert sich das Formularfeld nur geringfügig. Es erscheinen zwei weitere Felder. Wir sind nun bei der Erstellung des eigentlichen Zertifikats. 

In die hinzugekommenen Felder müssen wir nun sowohl unsere Hauptdomain, als auch die einzelnen Aliasse, mit denen unser Zertifikat verwendet werden soll, eintragen. Meine Hauptdomain (ich habe eine FritzBox) ist dabei „fritz.box“. Meinen iobroker erreiche ich im Netzwerk unter „iobrokertest.fritz.box“. Außerden möchte ich das Zertifikat auch für die Weboberfläche meiner virtuellen DiskStation nutzen und füge daher ebenfalls den Alias „vm-nas.fritz.box“ hinzu.   

Mit einem Klick auf „Übernehmen“ ist die Erstellung der Zertifikate abgeschlossen. 

Für die nächsten Schritte müssen wir das Zertifikat herunterladen. Dies lässt sich bewerkstelligen indem man in der Übersicht der Zertifikate z.B. einen Rechtsklick auf das neue Zertifikat macht und den Menüpunkt „Zertifikat exportieren“ auswählt. Zum Download erhält man dann eine zip-Datei die alle relevanten Zertifikatsdateien enthält. 

Zertifikat im ioBroker einspielen

Nachdem wir unsere Zertifikatsdateien auf dem PC abgelegt haben, wechseln wir zurück in den ioBroker Admin. Hier können wir nun in den allgemeinen Einstellungen des ioBroker, welche wir über einen Klick auf das Schraubenschlüsselsymbol in der Kopfzeile erreichen, in der Registerkarte „Zertifikate“ unser selbst erstelltes Zertifikat hinzufügen. 

Dazu öffnen wir die Datei „privkey.pem“ aus der Zip-Datei die wir beim Zertifikatsexport erhalten haben in einem Texteditor und kopieren den Inhalt im ioBroker Admin in eine neue Zertifikatsdefinition, die wir über das große Pluszeichenerstellt haben. 

Das Ganze wiederholen wir mit der Datei „cert.pem“. Die Namen der Zertifikatsdefinitionen sind dabei frei wählbar. 

Nachdem wir die Einstellungen gespeichert haben müssen wir unser Zertifikat noch als Standard für den ioBroker Admin einstellen. Dies geschieht über die Einstellungen des Admin Adapters in dem wir ja bereits die „Authentifikation“ und die „Verschlüsselung“ aktiviert haben. 

Nach dem „Speichern und Schließen“ der Einstellungen startet der Admin Adapter wieder durch. Nach einem Reload der Website erscheint wieder die bekannte Hinweismeldung zum ungültigen Zertifikat. Durch einen Klick auf die Worte „Nicht sicher“ in der Adresszeile des Google Chrome können wir uns mit einem weiteren Klick auf „Zertifikat“ selbiges einmal ansehen. Hier sollte nun unter „Ausgestellt von:“ auch der Name unserer Zertifizierungsstelle auftauchen.  

Hinweis

Das eingespielte Zertifikat kann natürlich innerhalb des ioBroker nicht nur für den Admin verwendet werden. Auch andere Adapter können es für ihre Weboberflächen verwenden.

Hinweismeldung auf ungültiges Zertifikat loswerden

Nun haben wir es ja schon weit geschafft, aber eine Sache stört immer noch. Das Zertifikat wird von unserem Browser nicht als gültig anerkannt, da es ja nicht von einer offiziellen Zertifizierungsstelle signiert worden ist. 

Was wir allerdings tun können ist, dass wir dem Browser selbst mitteilen, dass unserer Zertifizierungsstelle „My Home CA“ vertrauenswürdige Zertifikate ausstellt.  

Alles was wir dazu tun müssen, ist das „syno-ca-cert.pem“, das Root Zertifikat unserer Zertifizierungsstelle, aus unserer heruntergeladenen Zip-Datei auf unserem PC zu installieren. Dazu gibt es mehrere Wege.

Ich mache es hier einmal über die Einstellungen des Google Chrome. Unter „Datenschutz und Sicherheit“ > „Sicherheit“ findet Ihr einen Punkt „Zertifikate verwalten“. In dem sich öffnenden Fenster findet ihr auf der Registerkarte „Vertrauenswürdige Stammzertifizierungsstellen“ eine Schaltfläche zum „Importieren…“

Über den sich öffnenden Wizard lässt sich das Zertifikat der CA komfortabel importieren. Wählt dazu einfach in den weiteren Schritten die Datei „syno-ca-cert.pem“ aus der Zip-Datei aus, akzeptiert den Zertifikatsspeicher „Vertrauenswürdige Stammzertifizierungsstellen“ und bestätigt die sich öffnenden Sicherheitswarnung mit „Ja“. Das Zertifikat sollte nun in der Liste auftauchen. 

Startet ihr nun euren Browser einmal neu, wird beim Aufruf des Admins eurer Zertifikat als gültig erkannt und die Fehlermeldung ist Geschichte.

Hinweis

Natürlich wird das Zertifikat jetzt nur auf dem Client als gültig erkannt, auf dem unsere selbst erstellte CA entsprechend als „vertrauenswürdig“ eingestuft wurde.

Werden weitere PCs, Tablets oder Smartphones verwendet muss die CA (bzw. deren Root Zertifikat) selbstverständlich auch dort installiert werden.  

Das solle es zu diesem Thema erst einmal gewesen sein. Bei Fragen und Anregungen nutzt gerne die Kommentare oder kontaktiert mich über einen der öffentlichen Kanäle wie z.B. über das ioBroker Forum oder den ioBroker Discord Channel.

Grundsätzlich biete ich keinen persönlichen Support per Messenger bzw. E-Mail an. Fragen sollten meiner Meinung nach immer öffentlich gestellt und beantwortet werden, damit auch andere User mit der selben Frage Zugriff auf die Antworten bekommen. 🙂 Falls ihr mal irgendwo keine Antwort bekommt, nutzt gerne das Kontaktformular und macht mich auf euren Kommentar, Post, Beitrag oder Thread aufmerksam! Danke.

MfG,
André

Änderungshistorie

2021-01-14 Erste Veröffentlichung.