UniFi Cloud Gateway Ultra: Zertifikat austauschen

Ich nenne ein UniFi Cloud Gateway Ultra mein Eigen bei dem mich die SSL Fehlermeldung im Browser gestört hat.

UniFi Cloud Gateway Ultra: Zertifikat austauschen

Leider lässt sich auch nicht einfach das selbst signierte Zertifikat des Cloud Gateways in den Browser importieren. Da das Original Zertifikat weder die IP noch den DNS Namen des Cloud Gateways enthält, meckern die Browser munter weiter.

Das Zertifikat lässt sich aber austauschen, jedoch leider nicht ganz so einfach. Hier mal der Weg der für mich mit der Unifi OS Version 4.0.6 funktioniert hat. Vielleicht baut UniFi ja hier mal einen einfacheren Weg in UniFi OS ein.

In den UniFi OS Einstellungen muss zunächst SSH aktiviert und ein Passwort vergeben werden:

UniFi Cloud Gateway Ultra: Zertifikat austauschen

Jetzt kann man sich mit dem Benutzer root und dem gewählten Passwort per SSH am Cloud Gateway anmelden:

UniFi Cloud Gateway Ultra: Zertifikat austauschen

Hier kann jetzt das folgende kleine Script angepasst und ausgeführt werden:

#Request data
cat << 'EOF' > /data/unifi-core/config/req.conf
[req]
default_bits  = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = DE
stateOrProvinceName = NRW
localityName = Liemke
organizationName = FrankysWeb
commonName = ucg.frankysweb.de
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.1.1
IP.2 = 192.168.6.1
DNS.1 = ucg.frankysweb.de
EOF

#Backup private and public key
cp /data/unifi-core/config/unifi-core.crt /data/unifi-core/config/unifi-core.crt.bak
cp /data/unifi-core/config/unifi-core.key /data/unifi-core/config/unifi-core.key.bak

#New self signed certificate with existing private key
openssl req -x509 -new -key /data/unifi-core/config/unifi-core.key -days 365 -out /data/unifi-core/config/new.crt -config /data/unifi-core/config/req.conf

#Replace old certificate with new certificate
rm /data/unifi-core/config/unifi-core.crt
cp /data/unifi-core/config/new.crt /data/unifi-core/config/unifi-core.crt
rm /data/unifi-core/config/new.crt

#Restart nginx
systemctl restart nginx

In dem Script müsst ihr die Zeilen 10 – 14 und 19 – 22 an eure Umgebung anpassen. So lassen sich beispielsweise mehrere IPs aufnehmen (IP.1, IP2, usw.) und mehrere DNS Namen (DNS.1, DNS.2, usw). Das Script erzeugt dann Backup des Zertifikats und des dazugehörigen privaten Schlüssels. Danach wird ein neues selbst signiertes Zertifikat erzeugt und das alte Zertifikat durch das Neue ersetzt. Danach wird NGINX neu gestartet. Es dauert dann einen kurzen Augenblick bis die Webseite wieder lädt und mit dem neuen Zertifikat ausgeliefert wird:

UniFi Cloud Gateway Ultra: Zertifikat austauschen

Das neue selbst signierte Zertifikat lässt sich nun in den Browser importieren, sodass keine Warnung mehr angezeigt wird, wenn die Webseite über IP oder DNS Namen aufgerufen wird.

SSH kann zum Schluss wieder abgeschaltet werden.

Optional: CSR für CA erstellen

Falls kein selbst signiertes Zertifikat, sondern ein CSR erstellt werden soll, kann der openssl Befehl angepasst werden:

openssl req -new -key /data/unifi-core/config/unifi-core.key -config /data/unifi-core/config/req.conf -out /data/unifi-core/config/request.pem

Der CSR findet sich dann in der Datei /data/unifi-core/config/request.pem und kann durch eine CA signiert werden. Das Zertifikat muss dann in die Dateiu /data/unifi-core/config/unifi-core.crt kopiert werden.

Optional: Original Zertifikat wieder aktivieren

Falls es Probleme gibt, kann das originale Zertifikat wieder aktiviert werden. Dazu können die folgenden Befehle verwendet werden:

#Restore original Certificate
cp /data/unifi-core/config/unifi-core.crt.bak /data/unifi-core/config/unifi-core.crt 
cp  /data/unifi-core/config/unifi-core.key.bak /data/unifi-core/config/unifi-core.key

#Restart nginx
systemctl restart nginx

Es dauert jetzt wieder einen Augenblick bis das Original Zertifikat wieder angezeigt wird.

Leave a Comment