UniFi Controller: TLS Zertifikat tauschen

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Ich habe sehr lange die D-Link DAP-1665 für mein WLAN an meinen Wohnorten benutzt. Leider bin ich vom Handling und von der Performance her nicht wirklich überzeugt gewesen und habe deswegen auf Access Points von Ubiquity Networks geupgraded. Genauer gesagt auf die UniFi AP AC Lite.

Die Besonderheit bei diesen Geräten ist, dass die Access Points von einem Controller gesteuert werden. Die WLAN Einstellungen und viele weitere Optionen werden zentral über dieses Managment Tool gesteuert. Im professionellem Umfeld  ist ein arbeiten ohne Controller überhaupt nicht denkbar. Im privatem Umfeld sind solche Systeme nicht üblich, da sie normalerweise sehr teuer und umständlich sind. Ubiquity hat mit seinen 100 € Access Points und kostenloser Controller Software aber ein tolles Produkt für dein Heimanwender geschaffen. Ein ganzes Haus zum Beispiel mit 4-8 Access Points effizient abzudecken sind somit kein Problem mehr.

Die Controller Software ist in Java implementiert und hat als Benutzerschnittstelle eine Weboberfläche. Diese ist standardmäßig mit TLS abgesichert, jedoch muss dazu ein valides Zertifikat erstellt werden, damit der Browser nicht permanent vor einer unsicheren Verbindung warnt.

Um die Weboberfläche mit einem eigenen SSL/TLS Zertifikat auszustatten, muss man ein bisschen basteln, da diese keine Möglichkeit zum Austausch bietet.

1. Erstellen des privaten Schlüssels + Zertifikat

Hinweis: Hat man bereits den privaten Key und ein passendes Zertifikat, dann kann man direkt zu Punkt 2 springen. Hat man sogar schon einen fertigen Keystore (mit korrekten Aliases), dann kann man direkt zu Punkt 4 springen.

Als erstes muss man sich einen privaten Schlüssel generieren:

openssl genrsa -out wlancontroller+TLS+cert.key 2048

Dann erstellt man einen Certificate Signing Request (CSR):

openssl req -new -nodes -sha256 -key wlancontroller+TLS+cert.key -out wlancontroller.csr

In der Datei wlancontroller.csr ist nun der CSR gespeichert. Diesen übersendet man nun seiner CA und wartet bis das unterschriebene Zertifikat zurück kommt. Das fertige Zertifikat speichert man dann in die Datei wlancontroller+TLS+cert.crt.

2. Erstellen der PKCS12 Datei

Wie oben schon beschrieben benutzt der Controller Java als Backend. Dort werden private Schlüssel und Zertifikate on sogenannten Keystores gespeichert. Da man aber keinen selbst erstellten privaten Schlüssel in einen Keystore importieren kann, muss man ein bisschen tricksen und zuerst einen PKCS12 Keystore anlegen, der dann in einen Java Keystore umgewandelt wird.

Mit OpenSSL werden nun die Dateien zusammengefasst. Wichtig: Nur die orangen Parameter anpassen!

openssl pkcs12 -export -in wlancontroller+TLS+cert.crt -inkey wlancontroller+TLS+cert.key -out wlancontroller.p12 -name unifi -CAfile veloc1ty+Network+Certificate+Authority.crt -caname root

Wird man nach einem Passwort gefragt, dann nimmt man „aircontrolenterprise“. Nun hat man in der Datei wlancontroller.p12 den fast fertigen Keystore.

3. Umwandlung in einen Java Keystore

Umwandlung mit Hilfe des Java Keytools direkt auf dem Server, auf dem die Controller Software läuft. Ich habe zuvor die PKCS12 Datei nach /tmp/wlancontroller.p12 kopiert.

:~$ keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore keystore-2016-2017 -srckeystore wlancontroller.p12 -srcstoretype PKCS12 -srcstorepass aircontrolenterprise -alias unifi

Nun hat man einen Java Keystore in der Datei keystore-2016-2016. Dieser Keystore muss nun noch an die richtige Stelle kopiert werden, sodass er vom Controller beim nächsten Start gelesen werden kann.

4. Kopieren des Keystores an den richtigen Platz

Hinweis: Mein UniFi läuft nun auf Arch Linux. Dort war der Pfad nicht /var/lib/unifi, sondern /var/lib/unifi/data. Der Rest bleibt gleich.

Das Verzeichnis in den er gehört ist /var/lib/unifi:

:~$ cp keystore-2016-2017 /var/lib/unifi

Beim starten des Controllers wird nach einer Datei mit dem Namen „keystore“ in diesem Verzeichnis gesucht. Deshalb erstellt man einen symbolischen Link:

:~$ ln -s keystore-2016-2017 keystore

Nach dem Restart präsentier die Weboberfläche dann den neuen Keystore.

Quellen:

 


Du hast einen Kommentar, einen Wunsch oder eine Verbesserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.

🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg)
Zurück