Linux mit eigenen SSL Zertifikaten (ROOT CA installieren)

Um selbst ausgestellte Zertifikate zu nutzen, ist ein manueller Import der eigenen ROOT CA in den Zertifikatsspeicher des Linux Systems erforderlich.

In XCA das Root Zertifikat unserer CA als PEM (*.crt) exportieren. (PEM Textformat mit Kopf- und Fußzeilen)

Fedora 28

Das Zertifikat in den System Store installieren:

$ cp /opt/BACHMANN.LAN_ROOT_CA.crt /etc/pki/ca-trust/source/anchors/
$ update-ca-trust extract

Chromium, Vivaldi – Greifen auf das installierte Zertifikat im System Store zurück. Keine weiteren Schritte mehr notwendig.
Firefox – Ab der Version 50 kann automatisch nach installierten CA Zertifikaten im System gesucht werden.

Um das zu erreichen im Browser über about:config den Eintrag security.enterprise_roots.enabled auf true setzen.

Hat Fedora vorbildlich gelöst. Funktioniert ohne weiteres gefrickel!

Debian 9, Ubuntu 18.04, Linux Mint 19

Das Zertifikat in den System Store installieren:

$ cp /opt/BACHMANN.LAN_ROOT_CA.crt /usr/share/ca-certificates/
$ dpkg-reconfigure ca-certificates

Das neue Zertifikat auswählen und weiter.

Diese Installation funktioniert nur mit Anwendungen die den CA System Store nutzen. Alle gängigen Browser nutzen ihn nämlich nicht!
Für Chromium, Firefox und Co, muss das Zertifikat in die nssdb des aktuellen Benutzers installiert werden. (Das Backend für die Mozilla NSS Library.)

Zertifikat für den aktuellen Benutzer installieren:

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "BACHMANN.LAN ROOT-CA" -i /opt/BACHMANN.LAN_ROOT_CA.crt
$ certutil -d sql:$HOME/.pki/nssdb -L
Certificate Nickname         Trust Attributes
                             SSL,S/MIME,JAR/XPI
BACHMANN.LAN ROOT-CA         C,,

Chromium, Vivaldi – Greifen auf das installierte Zertifikat in der nssdb des Benutzers zurück.
Firefox – Nutzt seine eigene Datenbank im Profil des Benutzers. Zertifikat muss in Firefox importiert werden.

Funktioniert, ist aber nicht wirklich zufriedenstellend.

Die endgültige Lösung!

Damit alle Anwendungen den CA System Store nutzen, muss das p11-kit-modules Paket installiert werden und das NSS build-in trust roots Modul
mit der p11-kit-trust.so ersetzt werden. Das p11-kit bietet einen Drop-In-Ersatz für die libnssckbi.so, der als Adapter für die systemweiten Stammzertifikate fungiert, die in /etc/ssl/certs installiert sind.

Abhängig von der Distribution kommt z.B. Ubuntu mit mehrere Kopien der libnssckbi.so Library (hard-coded trust roots), die auch alle ersetzt werden müssen!

$ find / -type f -name "libnssckbi.so"
/usr/lib/firefox/libnssckbi.so
/usr/lib/thunderbird/libnssckbi.so
/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

# falls nicht schon im System installiert
sudo apt install -y p11-kit libnss3

# für jede Datei - backuppen und neuen symlink erstellen
sudo mv /usr/lib/firefox/libnssckbi.so /usr/lib/firefox/libnssckbi.so.BAK
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so

sudo mv /usr/lib/thunderbird/libnssckbi.so /usr/lib/thunderbird/libnssckbi.so.BAK
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/thunderbird/libnssckbi.so

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.BAK
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Einfacher geht es mit diesem Script. Es findet alle libnssckbi.so Dateien, erstellt ein backup und einen neuen symlink zur p11-kit-trust.so Datei.

#!/bin/bash
sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.BAK
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Alle Browser nutzen jetzt das installierte Zertifikat im CA System Store, keine weiteren Schritte mehr notwendig, perfekt!

2 Gedanken zu „Linux mit eigenen SSL Zertifikaten (ROOT CA installieren)“

Schreibe einen Kommentar