Dem UniFi Video NVR ein eigenes SSL Zertifikat unterzujubeln ist nicht gerade einfach.
Hier ist meine Anleitung wie ich es mit Unifi Video NVR 3.9.0 unter Debian 9 Stretch hinbekommen habe. (Vielen Dank für die gute Vorlage.)
Für meine interne Zertifikatsverwaltung nehme ich XCA. Das Zertifikat ist erstellt und muss zuerst aus XCA exportiert werden.
- das Zertifikat als DER (binäre DER formatierte Datei) → nvr.bachmann.lan_cert.der
- den privaten Schlüssel als PEM privat (der unverschlüsselte private Schlüssel in einer PEM Textdatei) → nvr.bachmann.lan_priv.key
Auf dem dem NVR erstellen wir ein neues Verzeichnis für die Zertifikate und kopieren unsere beiden Dateien dort hinein.
$ mkdir /usr/lib/unifi-video/data/certificates
Der private Schlüssel muss in das DER Format konvertiert werden damit er von Unifi Video akzeptiert wird!
$ openssl pkcs8 -topk8 -inform PEM -outform DER -nocrypt -in nvr.bachmann.lan_priv.key -out nvr.bachmann.lan_key.der
Die beiden Dateien müssen jetzt umbenannt werden. (ufv-server.cert.der = signed certificate / ufv-server.key.der = private key file)
$ mv nvr.bachmann.lan_cert.der ufv-server.cert.der $ mv nvr.bachmann.lan_key.der ufv-server.key.der
Für das Verzeichnis mit Inhalt müssen die Berechtigungen für den unifi-video user angepasst werden.
$ chown -R unifi-video:unifi-video /usr/lib/unifi-video/data/certificates
Den unifi-video service stoppen.
$ systemctl stop unifi-video
In der Datei /usr/lib/unifi-video/data/system.properties aktivieren wir jetzt die Unterstützung eigener Zertifikate. (einfach am Ende einfügen)
ufv.custom.certs.enable=true
Jetzt löschen wir den bestehenden ufv-truststore.
$ rm /usr/lib/unifi-video/data/ufv-truststore
Starten den unifi-video service wieder.
$ systemctl start unifi-video
Wenn alles funktioniert verschwinden die beiden Dateien aus dem certificates Verzeichnis und es wird ein neuer ufv-truststore mit unseren Schlüsseln erstellt.
Ist der private Schlüssel in einem falschen Format, oder bei sonstigen Problemen, lohnt sich ein Blick ins /usr/lib/unifi-video/logs/error.log.
1516530742.383 2018-01-21 11:32:22.383/MEZ: ERROR Failed to import private key! {} in main