Das Hinzufügen eines Zertifikats zum Linux-Truststore mag zunächst etwas kompliziert erscheinen, insbesondere wenn Sie nicht mit Zertifikatsdateien oder der Kommandozeile vertraut sind. Der Hauptgrund dafür ist, wenn Fehler auftreten, beispielsweise SSL certificate problem: unable to get local issuer certificatebeim Zugriff auf eine Website mit curl oder einem Browser, und Sie wissen, dass der Server ein selbstsigniertes oder internes CA-Zertifikat verwendet. Das ist etwas ärgerlich, da Linux-Anwendungen auf einen zentralen Truststore angewiesen sind, Browser wie Chrome und Firefox jedoch ihre eigenen, separaten Vertrauenseinstellungen verwalten. Selbst nach dem Hinzufügen zum System-Truststore zeigen manche Websites daher weiterhin Warnungen an. Diese Anleitung beschreibt, wie Sie diese Root-CA-Zertifikate zu Ihrem Linux-Truststore hinzufügen und wie Sie Browser dazu bringen, ihnen ebenfalls zu vertrauen.
So installieren Sie das Root-Zertifikat im Truststore unter Linux
Was hat es mit der Zertifikatsdatei auf sich?
Stellen Sie zunächst sicher, dass Ihr Zertifikat im PEM-Format vorliegt ( .CRT- oder .PEM -Datei).Linux arbeitet in der Regel mit PEM-Zertifikaten, da diese einfach zu importieren sind und mit. PEM beginnen —-BEGIN CERTIFICATE—. Falls Ihr Zertifikat im DER-Format (binär) vorliegt, müssen Sie es mit OpenSSL konvertieren. Der Befehl unter Linux lautet:
$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer
Dadurch erhalten Sie eine PEM-Datei, die Sie hinzufügen können. Gehen Sie genauso vor, wenn Sie mit vielen Zertifizierungsstellen arbeiten: Konvertieren Sie diese einfach alle zuerst. Kopieren Sie anschließend Ihre neuen Zertifikate in das Verzeichnis „Vertrauenswürdige Zertifikate“.
Hinzufügen Ihrer CA-Root-Zertifikate auf Debian-basierten Distributionen (Ubuntu, Mint, Kali)
Dies ist der häufigste Fall. Linux verfügt zwar über einen zentralen Zertifikatsspeicher, der sich üblicherweise unter `/etc/ssl/certs/` befindet, für neue Zertifikate sollten Sie jedoch `/usr/local/share/ca-certificates/` verwenden. Gehen Sie dazu wie folgt vor: Kopieren Sie Ihre .crtDateien dorthin und führen Sie anschließend den Befehl `update` aus. Geben Sie im Terminal Folgendes ein:
$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/
$ sudo update-ca-certificates -v
Hier noch ein kurzer Hinweis: Falls der update-ca-certificatesBefehl die Fehlermeldung „Befehl nicht gefunden“ ausgibt, müssen Sie wahrscheinlich zuerst das Paket ca-certificates installieren mit:
$ sudo apt-get install -y ca-certificates
Sobald dies abgeschlossen ist, sollte Ihr System das Zertifikat erkennen und ihm vertrauen. Nach der Aktualisierung wird eine Meldung wie „1 hinzugefügt, 0 entfernt“ angezeigt. Bei manchen Systemen kann dies jedoch zu Problemen führen – unter Umständen ist ein Neustart oder eine erneute Anmeldung erforderlich, damit die Aktualisierung einwandfrei funktioniert.
Eine andere Möglichkeit: CA-Zertifikate neu konfigurieren
Wenn Sie eher eine grafische Benutzeroberfläche bevorzugen oder eine Neukonfiguration durchführen möchten, können Sie Folgendes tun:
$ sudo dpkg-reconfigure ca-certificates
Dadurch öffnet sich ein Dialogfeld zum Aktivieren oder Deaktivieren vertrauenswürdiger Zertifizierungsstellen und der Zertifikatsspeicher wird aktualisiert. Nicht ganz so automatisch, aber gut geeignet, wenn Sie mehrere Zertifizierungsstellenzertifikate verwalten möchten, ohne die Dateien jedes Mal manuell kopieren zu müssen.
Überprüfung, ob Ihr Zertifikat als vertrauenswürdig eingestuft wurde.
Um zu überprüfen, ob Linux Ihrer hinzugefügten Zertifizierungsstelle vertraut, können Sie folgenden Befehl ausführen:
$ openssl verify my_trusted_root_ca.crt
Wenn alles in Ordnung ist, erhalten Sie eine OKMeldung. Andernfalls wird eine Fehlermeldung angezeigt unable to get local issuer certificate. Um zu überprüfen, ob die Vertrauenswürdigkeit Ihrer Website funktioniert, testen Sie mit curl:
$ curl -I https://yourdomain.local
Prüfen Sie, ob Header-Informationen ohne SSL-Fehler zurückgegeben werden. Manchmal melden Browser auch nach dem Hinzufügen von Zertifizierungsstellen weiterhin Fehler, da sie den Linux-Truststore nicht standardmäßig verwenden. In diesem Fall müssen Sie die browserspezifischen Truststores aktualisieren.
Hinzufügen eines vertrauenswürdigen CA-Zertifikats zu Chrome und Firefox
Da Browser den Truststore des Systems oft ignorieren, ist manuelles Eingreifen erforderlich. Firefox verwendet eine eigene Zertifikatsdatenbank – die cert8.db (ältere Versionen) oder cert9.db (neuere Versionen).Chrome, Chromium und andere Chromium-basierte Browser berücksichtigen die Linux-Trust-Einstellungen ebenfalls nicht automatisch.
Installieren Sie für Firefox das Tool certutil aus dem Paket libnss3-tools :
$ sudo apt install libnss3-tools
Führen Sie anschließend dieses Skript aus, um Ihre Zertifizierungsstelle zum Firefox-Archiv hinzuzufügen. Ersetzen Sie <Dateiname> my_rusted_root_ca.crtund My Root CA<Name> durch Ihre tatsächliche Datei und Ihren tatsächlichen Namen:
#!/bin/bash certfile="my_rusted_root_ca.crt" certname="My Root CA" for certDB in $(find ~/ -name "cert8.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d dbm:${certdir} done for certDB in $(find ~/ -name "cert9.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d sql:${certdir} done
Dadurch wird Ihre Stammzertifizierungsstelle dem vertrauenswürdigen Speicher von Firefox hinzugefügt. Möglicherweise müssen Sie Firefox anschließend neu starten, damit die Änderung wirksam wird.
Bei Chrome/Chromium ist es ähnlich, da auch diese Browser auf NSS basieren. Für eine schnelle Lösung genügt es in der Regel, das CA-Zertifikat in Ihren Benutzer-Truststore einzufügen. Beachten Sie jedoch, dass das manuelle Hinzufügen etwas knifflig sein kann – wundern Sie sich also nicht, wenn Sie ein wenig herumprobieren müssen.
Bei manchen Konfigurationen, insbesondere bei Unternehmens- oder internen Zertifikaten, empfiehlt es sich, sowohl die systemeigenen als auch die browserspezifischen Zertifikatsspeicher zu überprüfen, um lästige SSL-Warnungen zu vermeiden. Und falls Sie ein Zertifikat später entfernen möchten, löschen Sie einfach die entsprechende .crtDatei und führen Sie das Update erneut aus oder entfernen Sie die Einträge in der Zertifikatsdatenbank.
Zusammenfassung und kurze Checkliste
- Wir haben Ihr Zertifikat bei Bedarf in das PEM-Format konvertiert.
- Ich habe Ihr CA-Zertifikat nach /usr/local/share/ca-certificates/ kopiert.
- Ich habe das Programm ausgeführt
sudo update-ca-certificatesund die Ausgabe überprüft. - Verifiziertes Vertrauen mit
openssl verify. - Aktualisieren Sie gegebenenfalls die Vertrauensspeicher des Browsers (bei Firefox über certutil).
Schlussgedanken
Das kann zwar etwas umständlich sein, aber sobald alles korrekt eingerichtet ist, sollten Ihr Linux-System und Ihre Browser keine SSL-Warnungen mehr für interne Websites oder selbstsignierte Zertifikate ausgeben. Denn ganz ehrlich: Das Vermeiden dieser „Nicht vertrauenswürdige Zertifikate“-Fehler erleichtert die Arbeit mit Entwicklungs- oder internen Servern ungemein. Rechnen Sie mit ein paar Versuchen und vielleicht ein oder zwei Neustarts, aber sobald es funktioniert, läuft es in der Regel reibungslos. Hoffentlich hilft das jemandem, Zeit und Ärger mit SSL-Vertrauensproblemen zu sparen.