c_rehash: OpenSSL-Zertifikate per Hash-Symlink automatisieren

Einführung und Funktionsweise

Das Hilfswerkzeug c_rehash erfüllt innerhalb von OpenSSL-Umgebungen eine wesentliche Aufgabe: Es analysiert Zertifikatsdateien in einem Zielverzeichnis und erzeugt daraus selbsttätig hashbasierte symbolische Verknüpfungen. Anstatt bei jeder TLS-Verbindung Ordner sequenziell zu durchsuchen, greifen Webserver, Mail-Dienste und Validierungstools direkt über vorberechnete Hash-Indizes auf die Zertifikate zu. Dieser Praxisleitfaden beleuchtet die Funktionsweise von c_rehash und demonstriert die Konfiguration anhand eines nachvollziehbaren Workflows.

Grundlagen zu c_rehash und Paketinstallation

Bevor das Dienstprogramm eingesetzt werden kann, bringen wir den lokalen Paketindex auf den neuesten Stand und verifizieren das Vorhandensein der OpenSSL-Tools:

Paketlisten aktualisieren und OpenSSL installieren

Über das Dienstprogramm which lässt sich ermitteln, wo die Binär- bzw. Skriptdatei im Dateisystem hinterlegt ist:

Installationspfad von c_rehash ermitteln

Technisch gesehen scannt c_rehash alle PEM-Dateien eines Verzeichnisses, extrahiert deren Subject-Hash und verlinkt die Zertifikate unter diesem Hash-Wert. Die integrierte Hilfefunktion via -h fasst die wesentlichen Steuerungsparameter zusammen:

⚙️ Wichtige Optionen im Überblick

  • -h : Zeigt die Befehlssyntax sowie eine kompakte Parameterübersicht an.
  • -v : Aktiviert ausführliche Meldungen (Verbose-Modus) zu gelöschten und neu angelegten Symlinks.
  • -old : Berechnet Hashwerte nach dem älteren Schema früherer OpenSSL-Versionen (vor Release 1.0.0).
  • -n : Verhindert das standardmäßige Bereinigen bestehender symbolischer Verknüpfungen vor dem Neuerstellen.

Hilfeübersicht von c_rehash

Für ein sicheres Experimentieren ohne Auswirkungen auf Produktivdateien erzeugen wir zunächst einen isolierten Testordner:

Neues Testverzeichnis anlegen

Anschließend erstellen wir mittels openssl req ein erstes selbstsigniertes X.509-Zertifikat nebst dazugehörigem privaten RSA-Schlüssel:

Selbstsigniertes Zertifikat und Schlüssel erzeugen

Vor dem Ausführen der Verlinkung empfiehlt sich ein Kontrollblick auf den Verzeichnisinhalt über ls -l:

Inhalt des Testverzeichnisses prüfen

Nun übergeben wir das Verzeichnis als Parameter an c_rehash, damit das Tool das Zertifikat indiziert und die Verknüpfung einrichtet:

c_rehash auf das Testverzeichnis anwenden

Ein erneuter Verzeichnisaufruf belegt die erfolgreiche Ausführung: Es existiert nun ein symbolischer Link in Form eines 8-stelligen Hex-Werts mit der Endung .0, welcher unmittelbar auf cert.pem zeigt:

Generierten Hash-Symlink im Dateisystem verifizieren

Verbose-Modus analysieren und Hashwerte verifizieren

In Administrationsszenarien werden Zertifikatsspeicher regelmäßig um neue Zertifizierungsstellen erweitert. Um diesen Vorgang nachzustellen, generieren wir ein zweites Zertifikatspaar (cert2.pem / key2.pem):

Zweites Testzertifikat erstellen

Rufen wir nun c_rehash mit der Option -v auf, wird der gesamte Ablauf im Terminal transparent: Das Tool dereferenziert alte Verknüpfungen (unlink) und baut die Index-Links sowohl für das bestehende als auch für das neu hinzugekommene Zertifikat sauber auf (link):

Ausführliche Ausgabe von c_rehash mit Verbose-Modus

Um nachzuvollziehen, woher der Dateiname des Symlinks stammt, berechnen wir den Subject-Hash von cert.pem direkt über das OpenSSL-Subkommando x509:

Der ermittelte Wert (a61fdd91) entspricht exakt dem Präfix des generierten Links (a61fdd91.0), was die korrekte Indizierung bestätigt.

Prüfung des Zertifikatshashwerts mit openssl x509

Systemweites Zertifikatsverzeichnis und Bereinigung

Unter Ubuntu dient /etc/ssl/certs als zentrales Sammelbecken für globale CA-Zertifikate, auf welches Systemdienste und c_rehash standardmäßig zurückgreifen. Die Zugriffsrechte dieses Systempfads lassen sich mittels ls -ld einsehen:

Berechtigungen des zentralen Zertifikatsverzeichnisses prüfen

Nach Abschluss der Tests entfernen wir das temporäre Arbeitsverzeichnis restlos vom Dateisystem:

Temporäre Testdateien restlos löschen

Mit c_rehash steht Systembetreuern ein verlässliches Werkzeug zur Verfügung, um Zertifikatsspeicher konsistent und performant zu verwalten. Durch die automatische Generierung von Hash-Symlinks entfällt manueller Pflegeaufwand, während Anwendungen auf Zertifikate stets ohne Verzögerung zugreifen können.