SSL-Truststores

~4 min read

OK, dann wollen wir mal schauen. Zum einen wollen wir uns über die Systeme her machen. Zum anderen aber auch über Browser.

System-Truststores

Was ist denn nun ein "System-Truststore" im allgemeinen ?

Grundsätzlich kennen wir im Linux-Umfeld hier mehrere, z.b. betreffend der Paketverwaltung, wo viele Distributionen einen GPG-Truststore pflegen. Diesen wollen wir hier aber nicht betrachten.

Wir wollen uns hier einmal mit SSL/TLS-Truststores beschäftigen. Viele Systeme kennen hier Pakete wie bspw. ca-certificates.

Debian/Ubuntu

Unter Debian/Ubuntu ist die Sache relativ einfach. Es gibt hier das Paket ca-certificates, welches auch ein paar Helper-Scripte beinhaltet. Die Dateien befinden sich in 2 Pfaden. /usr/share/ca-certificates sowie /etc/ssl/certs. Wobei hier die Truststore-Datei selbst unter /etc/ssl/certs/ca-certificates.crt zu finden ist.

Die Truststore_Datei ist dabei einfach eine Liste aller konfigurierten und somit erlaubten Zertifikate im PEM-Format.

Bearbeiten

Allgemein kann man die vorhandenen Zertifikate anhand einer Konfigurationsdatei unter /etc/ca-certificates.conf ggf. ausschließen. Hier werden alle im Paket enthaltenen Zertifikate gelistet. Einträge beginnend mit ! deaktivieren einen Eintrag. Gleichzeitig kann diese Datei auch über den Konfigurationshelper per dpkg-reconfigure ca-certificates erstellt/bearbeitet werden.

Nachfolgend ist auf jeden Fall die Neuerstellung des Truststores notwendig, welche per update-ca-certificates1 durchgeführt wird.

Manuelle Einträge

Zusätzlich dazu werden bei der Neuerstellung zusäzlich Zertifikate im Pfad /usr/local/share/ca-certificates berücksichtigt. Diese werden bei Script-Ausführung automatisch dem Truststore hinzugefügt.

Fedora

Auch in anderen Distributionen wird dies natürlich entsprechend behandelt. Hier gilt ähnliches, auch das Paket nennt sich bei Fedora ca-certificates.

Auch eine wie unter Debian beschriebene Funktion ist verfügbar, und auch die Endpfade sind durchaus ähnlich. Der Pfad ist wieder /etc/ssl/certs/ca-certificates.crt, hier jedoch ein Symlink auf eine andere Datei tls-ca-bundle.pem. Das Utility nennt sich hier update-ca-trust, und die automatisch einzupflegenden Cert-Files kommen nach /etc/pki/ca-trust/source/anchors/.2

Bearbeiten

Des weiteren gibt es aber noch ein allgemeines Bearbeitungsutility namens trust. Hier gibt es dann wieder die Möglichkeit, Zertifikate manuell hinzufügen zu können. Ebenfalls aber auch die Möglichkeit, Zertifikate zu entfernen.

Das Entfernen geschieht hier über 2 Möglichkeiten. Zum einen kann man das jeweilige Zertifikat als Parameter nutzen, wobei hier der Pfad zur Zertifikatsdatei gemeint ist. Des weiteren kann man eine ZertifikatsID nutzen, welche beim auflisten der Zertifikate mit dem Befehl dargestellt wird.

Nachstehend einmal ein einzelner Eintrag aus dem Truststore dargestellt:

pkcs11:id=%AD%6C%AA%94%60%9C%ED%E4%FF%FA%3E%0A%74%2B%63%03%F7%B6%59%BF;type=cert
    type: certificate
    label: thawte Primary Root CA - G3
    trust: anchor
    category: authority

ArchLinux

Und um es am Ende unserer Distributionen-Liste etwas kurz zu machen, können wir hier eine einfache Aussage treffen.

Unter ArchLinux gibt es ebenfalls ein Paket namens ca-certificates, und beim Tooling kommt das vorher beschriebene Tooling von Fedora zum Einsatz.3 Somit können wir dies einfach abkürzen.

Browser-Truststores

Doch wenn wir bereits einen Truststore im System haben, warum müssen wir dann auch noch über Browser reden ? Warum können Browser nicht einfach auch auf den Truststores des Systems aufbauen ?

Die Browser-Hersteller haben ihre eigenen Richtlinien, was die CAs angeht, welchen sie vertrauen. Bei Linux-Systemen wird hier sogar im genannten Paket der Truststore von Mozilla als Basis verwendet. Jedch möchten sich die Browser-Hersteller hier eine gewisse Unabhängigkeit wahren, und nutzen somit ihren eignen Truststore.

Somit können sie systemübergreifend, sowie auch plattformübergreifend einen vergleichbaren Truststore verwenden. Gleichzeitig können Anpassungen am Truststore unabhängig von den Betriebssystemen durchgeführt werden. Bspw. im Bereich der mobilen Endgeräte kann das von essentieller Notwendigkeit sein. Somit können wir auch auf älteren Android-Versionen noch mit aktuellen Webseiten kommunizieren. Zwar können ggf. Apps nicht mehr auf Schnittstellen zugreifen, aber die Browser-App funktioniert weiterhin. Und gleichzeitig definiert der Browser das Sicherheitsniveau.

Des weiteren besteht aber auch die Möglichkeit, bspw. in Firmenumgebungen benötigt, dass die Browser zur Laufzeit auch den System-Truststore mit verwenden. Ein Windows-AD-Server bspw. verwendet eine eigene CA zur Absicherung der Verbindungen. Oder auch interne Systeme verwenden aus Sicherheitsgründen eine eigene CA, damit außenstehende hier ggf. auf Probleme stoßen, bzw. weitere Absicherungsmaßnahmen getroffen werden können.

Somit muss dann natürlich dem Browser die notwendigen CA-Zertifikate bekannt gemacht werden.

Manuelle Bearbeitung

Doch was kann man tun, wenn man den Truststore des Browsers manuell bearbeiten will. Nachfolgend schauen wir uns dies einmal am Beispiel eines Firefox-Browsers an.

Unter Eistellungen -> Datenschutz und Sicherheit finden wir den Menu-Punkt Zertifikate verwalten. Einstellungen

Daraufhin öffnet sich dann ein Menu, welches unter anderem die Zertifizierungsstellen auflistet, welchen der Browser vertraut. Zertifizierungsstellen

Hier können sie dann auch die vorher genannten Optionen durchführen. Sie können konfigurieren, was mit den einzelnen CAs durchgeführt werden darf, und ob diesen vertraut werden soll/darf. Sie können Zertifikate auch im Detail ansehen, falls gewünscht. Nachfolgend einmal eine kurze Übersicht über ein solches Zertifikat:

Zertifikat

Aber das wichtigte, neben dem exportieren, ist wohl das importieren von CA-Certifikaten. Aus diesem Menu heraus können sie manuell eigene CA-Zertifikate im Truststore des Browsers hinterlegen.

Und auch wenn wir diesen Exkurs anhand des Browsers Firefox durchgeführt haben, gilt dies durchaus allgemein. Auch die anderen Browser können in ähnlicher Art konfiguriert werden.


Other articles