Zertifikate im systemweiten Truststore verwalten

Das Verwalten von Certificate Authority (CA) Zertifikaten für jede Applikation, wie curl, wget, java, etc. ist aufwändig und mühsam. Zum Glück gibt es eine einfache Lösung wie man Zertifikate für das ganze System im systemweiten Truststore verwalten kann. Wenn du erfahren willst, wie man das macht und auf was man sich achten muss, dann ist dieser Blog-Eintrag genau das Richtige für dich.

Zertifikate zum Truststore hinzufügen

Standardmässig sind auf dem System bereits eine ganze Menge von Zertifikaten vorinstalliert. Diese kommen mit dem Packet ca-certificatesmit. Grundsätzlich gibt es zwei verschiedene Pfade, wo die eigenen Zertifikate im PEM-Format abgelegt werden können. Somit werden sie beim Generieren des Truststores berücksichtigt.

  • /usr/share/pki/ca-trust-source/anchors/: Zertifikate im PEM-Format mit einer niedrigen Priorität
  • /usr/share/pki/ca-trust-source/: Zertifkate im erweiterten „BEGIN TRUSTED“ File Format mit einer niedrigen Priorität
  • /etc/pki/ca-trust/source/anchors/: Zertifikate im PEM-Format mit einer hohen Priorität
  • /etc/pki/ca-trust/source/: Zertifikate im erweiterten „BEGIN TRUSTED“ File Format mit einer niedrigen Priorität

Die eigenen Zertifikate sollte man also besser im/etc/pki/ca-trust/source/ ablegen, damit sie die höchste Priorität besitzen und bevorzugt werden.

Es können zusätzlich auch Zertifikate hinzugefügt werden, welchen man explizit nicht vertrauen möchte. Diese können in die folgenden beiden Pfade gelegt werden.

  • /usr/share/pki/ca-trust-source/blacklist/
  • /etc/pki/ca-trust/source/blacklist/

 Löschen der vorinstallierten Zertifikate

Es kann sein, dass man den vorinstallierten Zertifikaten nicht vertraut und deshalb nur seine eigenen Zertifikate im Truststore haben möchte.
Dies ist möglich, indem man die vorinstallierten Zertifkate löscht. Dies ist jedoch keine empfohlene Konfiguration. Denn, falls ein System direkt nach aussen ins Internet kommuniziert, kann es dazu führen, dass Verbindungen nicht mehr aufgebaut werden können! So würde z.B. yum updatenicht mehr funktionieren.

bash
rm -f /usr/share/pki/ca-trust-legacy/ca-bundle.legacy.default.crt

Beachte: Bei einem Update oder Reinstallation des ca-certificatesPaket die Standard Zertifikate wieder installiert werden!

Anzeigen lassen des Truststores

Auf einem RHEL7 System kann der Truststore mit dem Kommando trust list angezeigt werden und generiert einen Output wie diesen:

[root@localhost anchors]# trust list
pkcs11:id=%d2%87%b4%e3%df%37%27%93%55%f6%56%ea%81%e5%36%cc%8c%1e%3f%bd;type=cert
    type: certificate
    label: ACCVRAIZ1
    trust: anchor
    category: authority
pkcs11:id=%f7%7d%c5%fd%c4%e8%9a%1b%77%64%a7%f5%1d%a0%cc%bf%87%60%9a%6d;type=cert
...

Auf einem RHEL6 System gibt es dieses Kommando jedoch nicht. Somit ist es etwas umständlicher die Zertifikate im Truststore anzeigen zu lassen. Man kann dies mit dem folgenden Workaround machen:

Für jeden generierten Truststore im Pfad /etc/pki/ca-trust/extracted/ das folgende Kommando ausführen, wobei die Input-Datei angepasst werden muss.

[root@localhost anchors]# awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print |
cmd}' < /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
unable to load certificate
140142916292976:error:0806F06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting:
TRUSTED CERTIFICATE
subject= /C=CH/O=My Company/CN=MY COMPANY Test CA 2
subject= /C=CH/O=My Company/CN=MY COMPANY CA 2

Truststore auf RHEL6 aktivieren

Möchte man den Truststore auf einem RHEL6 System verwalten, muss dieser zuerst aktiviert werden, indem man das Kommando ca-trust enable absetzt. Dies sollte am besten gerade als erstes gemacht werden bevor man irgendwelche Zertifikate hinzufügt oder entfernt.

Testen

1. Wget einer internen Seite

[root@localhost anchors]# curl 
curl: (60) Peer's Certificate issuer is not recognized.
More details here: http://curl.haxx.se/docs/sslcerts.html

2. Eigenes Zertifikat hinzufügen: cp my-ca-cert.crt /etc/pki/ca-trust/source/anchors/
3. Truststore neu generieren: update-ca-trust extract
4. Wget die gleiche interne Seite

[root@localhost anchors]# curl  | head
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5172    0  5172    0     0  30729      0 --:--:-- --:--:-- --:--:-- 30785

Alles in Kürze

1. (Auf Rhel6) Truststore aktivieren: update-ca-trust enable
2. Eigenes Zertifikat hinzufügen: cp my-ca-cert.crt /etc/pki/ca-trust/source/anchors/
3. (Optional) Standard Zertifikate löschen: rm -f /usr/share/pki/ca-trust-legacy/ca-bundle.legacy.default.crt
4. Truststore neu generieren: update-ca-trust extract

Weiterführende Links:

  • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-shared-system-certificates
  • man pages von update-ca-trust

Kommentare sind geschlossen.