Wer verschlüsselte Nachrichten versenden möchte, braucht nicht nur den öffentlichen Schlüssel des Empfängers, sondern auch die Gewissheit, dass dieser wirklich der richtigen Person gehört. Bei der Schlüsselverwaltung unterstützen die GnuPG-Tools. Wir schauen uns die Zertifikatsverwaltung mit einem Web Key Directory und einem Verzeichnisdienst sowie die automatisierte Beglaubigung mit actium an.
Die Open-Source-Software GnuPG (GNU Privacy Guard) [1] kommt weltweit für das Verschlüsseln und Signieren von E-Mails und Dateien zum Einsatz. Ihre Implementierung und Nutzung können jedoch eine Herausforderung darstellen, wenn es darum geht, in größerem Umfang Zertifikate zu verteilen und deren Herkunft zu beglaubigen. Flexible Vertrauensmodelle wie das hierarchische Modell mit einem Trusted Key als Vertrauensanker und optionalen Trusted Introducern für bereichsspezifische Beglaubigungen erleichtern die Verwaltung: Der Trusted Key (CA-Zertifikat) beglaubigt Schlüssel organisationsweit, während Trusted Introducer (Zwischenzertifikate) gezielt Vertrauen für bestimmte Domains aussprechen. Weitere Details und Hintergründe dazu finden Sie im GnuPG-Whitepaper zur Zertifikatsverwaltung [2].
GnuPG bildet die Grundlage für weitere Werkzeuge, die für unterschiedliche Sicherheitsanforderungen konzipiert sind: Bei GnuPG Desktop [3] und Gpg4win [4] handelt es sich um die benutzerfreundlichen Desktopvarianten. Für den besonders sicheren Einsatz in Behörden und Unternehmen steht GnuPG VS-Desktop [5] zur Verfügung. Denn gerade bei datenschutzrelevanten Informationen oder solchen, die sogar als "Verschlusssache – Nur für den Dienstgebrauch" (VS-NfD) klassifiziert sind, stehen Sicherheit und Datenintegrität an erster Stelle.
Schlüssel in Web Key Directory bereitstellen
Ein Web Key Directory (WKD) bietet eine einfache und sichere Möglichkeit, öffentliche Schlüssel für E-Mail-Adressen über HTTPS bereitzustellen. Der zugrunde liegende Standard ist seit Version 2.1.12 in GnuPG implementiert und ab Version 2.1.23 standardmäßig aktiviert. Der Web Key Service (WKS) ergänzt das Verfahren. Er automatisiert die Verwaltung und Veröffentlichung der Schlüssel in einem WKD, ist aber nicht zwingend erforderlich. Viele Organisationen und Einzelpersonen richten einfach nur ein WKD ein. Der Vorteil bleibt: Sie können sicherstellen, dass die öffentlichen Schlüssel der E-Mail-Nutzer Ihrer Domain jederzeit über HTTPS abrufbar sind.
Die Open-Source-Software GnuPG (GNU Privacy Guard) [1] kommt weltweit für das Verschlüsseln und Signieren von E-Mails und Dateien zum Einsatz. Ihre Implementierung und Nutzung können jedoch eine Herausforderung darstellen, wenn es darum geht, in größerem Umfang Zertifikate zu verteilen und deren Herkunft zu beglaubigen. Flexible Vertrauensmodelle wie das hierarchische Modell mit einem Trusted Key als Vertrauensanker und optionalen Trusted Introducern für bereichsspezifische Beglaubigungen erleichtern die Verwaltung: Der Trusted Key (CA-Zertifikat) beglaubigt Schlüssel organisationsweit, während Trusted Introducer (Zwischenzertifikate) gezielt Vertrauen für bestimmte Domains aussprechen. Weitere Details und Hintergründe dazu finden Sie im GnuPG-Whitepaper zur Zertifikatsverwaltung [2].
GnuPG bildet die Grundlage für weitere Werkzeuge, die für unterschiedliche Sicherheitsanforderungen konzipiert sind: Bei GnuPG Desktop [3] und Gpg4win [4] handelt es sich um die benutzerfreundlichen Desktopvarianten. Für den besonders sicheren Einsatz in Behörden und Unternehmen steht GnuPG VS-Desktop [5] zur Verfügung. Denn gerade bei datenschutzrelevanten Informationen oder solchen, die sogar als "Verschlusssache – Nur für den Dienstgebrauch" (VS-NfD) klassifiziert sind, stehen Sicherheit und Datenintegrität an erster Stelle.
Schlüssel in Web Key Directory bereitstellen
Ein Web Key Directory (WKD) bietet eine einfache und sichere Möglichkeit, öffentliche Schlüssel für E-Mail-Adressen über HTTPS bereitzustellen. Der zugrunde liegende Standard ist seit Version 2.1.12 in GnuPG implementiert und ab Version 2.1.23 standardmäßig aktiviert. Der Web Key Service (WKS) ergänzt das Verfahren. Er automatisiert die Verwaltung und Veröffentlichung der Schlüssel in einem WKD, ist aber nicht zwingend erforderlich. Viele Organisationen und Einzelpersonen richten einfach nur ein WKD ein. Der Vorteil bleibt: Sie können sicherstellen, dass die öffentlichen Schlüssel der E-Mail-Nutzer Ihrer Domain jederzeit über HTTPS abrufbar sind.
Dieses Verfahren eignet sich nicht nur für kleinere Organisationen oder Einzelpersonen, sondern auch für größere Unternehmen mit mehreren Tausend Mitarbeitenden. Um ein WKD einzurichten, benötigen Sie lediglich einen Webserver für Ihre Domain, etwa Apache oder Nginx. Wichtig ist, dass der Server über ein gültiges SSL/TLS-Zertifikat verfügt und Sie dort ein statisches Verzeichnis anlegen können, das regelmäßig aktualisiert wird. Das kann problemlos parallel zu Content-Management-Systemen erfolgen, da das WKD in einem dedizierten Verzeichnis liegt.
Ordnerstruktur einrichten und Webserver konfigurieren
Um ein Web Key Directory in Betrieb zu nehmen, erstellen Sie zuerst die notwendige Ordnerstruktur auf dem Webserver, unter der später dann die öffentlichen Schlüssel liegen:
WKD verwendet Hashes anstelle von Klartextnamen, um Problemen mit Dateinamen-Codierungen aus dem Weg zu gehen. Damit WKD-Clients erkennen, dass Ihr Server ein Web Key Directory anbietet, erzeugen Sie eine leere Datei, die als Hinweis für die Clients dient:
Passen Sie dabei den Pfad zum DocumentRoot-Verzeichnis entsprechend an. Als Nächstes konfigurieren Sie Ihren Webserver, um das Verzeichnis ".well-known/openpgpkey" als Speicherort für PGP-Schlüssel zu definieren. Für Apache verwenden Sie die in Listing 1 gezeigte Konfiguration. Sie sorgt dafür, dass die PGP-Schlüssel als Binärdaten (application/octet-stream) ausgeliefert werden und der Zugriff von jeder Domäne erlaubt ist (CORS).
Dieser führt zu einer Ausgabe nach folgendem Muster:
ed25519 2022-08-29 [SC] [verfällt: 2027-08-20]
uid [ ultimativ ] Name name@example.org
updgef8corpy81hia1rhd8npqiti6nzf @example.org
In der Ausgabe sehen Sie unter jeder UID-Zeile mit einer E-Mail-Adresse eine 32-stellige Zeichenfolge vor dem Domain-Teil der E-Mail-Adresse. Dies ist der WKD-Hash, in unserem Beispiel "updgef8corpy81hia1rhd8npqiti6nzf". Nun exportieren Sie den öffentlichen Schlüssel im Binärformat (ohne ASCII-Armor) und benennen die Datei nach dem WKD-Hash:
Legen Sie die exportierte Datei dann im Verzeichnis ".well-known/openpgpkey/ hu" auf Ihrem Webserver ab. Sobald der öffentliche Schlüssel im richtigen Verzeichnis liegt, ist Ihr WKD einsatzbereit. Um mehrere Zertifikate für eine bestimmte Domain zu exportieren, nutzen Sie den folgenden Befehl:
Bestimmen Sie eine vertrauenswürdige Person in Ihrer Organisation, die sich um die Pflege des WKD kümmert. Die Mitarbeiter schicken ihre Zertifikate einfach an diese Person, die sie dann in das WKD aufnimmt. Dafür importiert die Person die Schlüssel lokal in ihren Schlüsselbund und lädt sie anschließend mit einem einfachen Befehl oder Skript automatisiert auf den Webserver hoch.
Um die Zertifikate regelmäßig zu spiegeln – etwa ein- bis zweimal täglich –, empfiehlt sich ein Skript mit einem Cronjob oder einer geplanten Aufgabe (Task Scheduler). Das Skript sollte vorher das lokale Spiegelverzeichnis leeren, beispielsweise mit der Löschoption von rsync, damit entfernte Schlüssel automatisch aus dem WKD verschwinden.
Verzeichnisdienst mit internem Schlüsselserver
Ein Verzeichnisdienst wie die Active Directory Lightweight Directory Services (AD LDS) unter Windows oder OpenLDAP unter Linux ist ideal, um Zertifikate per LDAP-Protokoll in Ihrer Organisation bereitzustellen. Ab etwa 25 Nutzern lohnt sich dieses Setup, und bei mehr als 50 Anwendern ist es praktisch unverzichtbar, da das manuelle Importieren von Zertifikaten sonst schnell zu aufwendig wird.
Um Zertifikate über einen Verzeichnisdienst bereitzustellen, benötigen Sie mindestens GnuPG 2.2.28 und zwei spezielle LDAP-Schema-Dateien im LDIF-Format (LDAP Data Interchange Format). Die GnuPG-Entwickler stellen Konfigurationen für Windows [6, 7] und Linux [8, 9] bereit, die auf einem Ende der 1990er-Jahre entwickelten PGP-Schema basieren. Die Entwickler haben die Schema-Definitionen um wichtige Attribute erweitert, die es ermöglichen, Zertifikate nicht nur anhand der Fingerabdrücke zu suchen, sondern auch Informationen über Unterschlüssel und UTF-8-codierte E-Mail-Adressen zu speichern.
LDS-Einrichtung unter Windows
Um die Schema-Dateien in den LDAP-Verzeichnisdienst zu importieren, laden Sie sie von der Hersteller-Website herunter. Unter Windows öffnen Sie eine Eingabeaufforderung als Administrator und verwenden das Tool "ldifde" zum Importieren:
Ersetzen Sie den Platzhalter durch den Namen Ihres AD-Servers, zum Beispiel "localhost"). Die Angabe der Portnummer hinter "-t" ist nur erforderlich, wenn Sie einen vom Standardport (389 für LDAP oder 636 für LDAP über SSL) abweichenden Port verwenden. Der Parameter "-c" ersetzt Platzhalter innerhalb der LDIF-Dateien zur Laufzeit, etwa "#configurationNamingContext" durch "DC=EXAMPLEDC". Im zweiten Befehl wird "#configurationNamingContext" durch den vollständigen Distinguished Name (DN) des Schlüsselservers ("CN=keyserver, DC=demo,DC=orga,DC=de") ausgetauscht, um die Einträge in die spezifische AD-Struktur zu integrieren.
Zum Abschluss müssen Sie Berechtigungen festlegen, damit Domänenbenutzer im Netzwerk auf den Schlüsselserver zugreifen können. Verwenden Sie dafür das Tool "ldp.exe", um Zugriffsrechte zu verwalten und vollständigen Lesezugriff sowie erweiterte Schreibrechte einzurichten. Weitere Details finden Sie im LDS-Installationsleitfaden [10].
LDAP-Einrichtung unter Linux
Unter Linux installieren Sie das Schema als Administrator (root) auf Ihrem LDAP-Server mit folgendem Befehl:
Dabei sorgt "-v" für eine ausführliche Ausgabe und "-Y EXTERNAL" bestimmt den Authentifizierungsmechanismus (hier: lokale Socket-Authentifizierung ldapi). "-H ldapi:///" wiederum verweist auf den Standard-OpenLDAP-Socket (in der Regel ”/var/run/slapd/ldapi)”. Hinter "-f" geben Sie das Schema an.
Der nächste Schritt besteht darin, das neue Schema mit Ihrem Directory Information Tree zu verknüpfen, damit Einträge zum Speichern der Zertifikate und Metadaten erstellt werden. So kann GnuPG die Daten finden. Bearbeiten Sie dazu die heruntergeladene Datei "gnupg-ldap-init.ldif" und ersetzen Sie alle RDNs mit ”dc” durch Ihre eigene Domain.
Wiederholen Sie dies für alle weiteren dc-Einträge in der Datei. Falls Sie eine Drei-Ebenen-Domain verwenden, fügen Sie entsprechend einen weiteren dc-Eintrag hinzu, so wie bei der Einrichtung von OpenLDAP. Führen Sie dann die modifizierte Datei mit folgendem Befehl aus:
Achten Sie darauf, auch hier die RDN-Attribute an Ihre Konfiguration anzupassen. Dabei sorgt "-x" für eine einfache Authentifizierung, "-D" für den Bind-DN zum Verbinden mit dem LDAP-Verzeichnis und "-W" fragt nach dem Passwort des Administrators.
Der Weg zum Verzeichnisdienst
Um Windows-Rechner mit dem Verzeichnisdienst zu verbinden, gibt es verschiedene Ansätze. Eine Möglichkeit ist, den Eintrag "NTDSKeyserver" in der Registry unter "Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ GNU \ GnuPG" anzulegen und dort die Adresse des Servers zu hinterlegen.
Bei Bedarf verteilen Sie den Registry-Eintrag über Gruppenrichtlinien in der ganzen Organisation. Alternativ passen Sie die Programmeinstellungen des Zertifikatsmanagers Kleopatra für die Benutzer an und tragen die Serveradresse dort ein.
Auch unter Linux können Benutzer den Verzeichnisdienst im grafischen Zertifikatsmanager Kleopatra hinterlegen. Alternativ bearbeiten Sie die Konfigurationsdatei "dirmngr.conf", die sich im GnuPG-Home-Verzeichnis in der Regel "~/.gnupg" befindet. Fügen Sie dort eine Zeile wie diese ein:
keyserver ldap://ldap.example.com
Die zentrale Verwaltung über LDAP ist weniger aufwendig als das manuelle Versenden von Zertifikaten und praktischer als WKD, da die Bereitstellung an einer Stelle erfolgt.
Als Admin sollten Sie einen klaren Prozess für den Upload von Zertifikaten auf den LDAP-Server festlegen und im Vorfeld entscheiden, welche Benutzer reinen Lesezugriff oder auch Schreibrechte erhalten.
Wenn Sie bereits ein WKD in Ihrer Organisation einsetzen, können Sie mit dem Tool "gpg-wks-client" in einem Verzeichnisdienst gespeicherte Zertifikate automatisch ins WKD spiegeln:
gpg-wks-client -mirror example.com
Dieser Befehl sucht im Verzeichnisdienst nach den Zertifikaten und erstellt dann im WKD entsprechende Einträge für die Nutzer. Dadurch stehen diese Zertifikate dann nicht nur im LDAP, sondern auch direkt über HTTPS im Web Key Directory zur Verfügung.
Zertifikatsverteilung braucht Beglaubigung
Bisher haben wir uns darauf konzentriert, wie Sie Zertifikate innerhalb Ihrer Organisation verteilen können. Doch das allein reicht oft nicht aus – besonders, wenn Sie sicherstellen möchten, dass die Schlüssel tatsächlich von den richtigen Personen stammen. Hier kommt die Beglaubigung ins Spiel.
In kleineren Teams oder bei weniger Nutzern kann es ausreichen, dass eine verantwortliche Person in der Organisation die Schlüssel manuell prüft und beglaubigt. Diese Person könnte beispielsweise den Schlüssel über das WKD veröffentlichen und gleichzeitig die Identität desjenigen bestätigen, dessen Schlüssel sie verwaltet. Dabei spielt Vertrauen eine zentrale Rolle: Sie verlassen sich darauf, dass diese Person gewissenhaft den Fingerprint überprüft und die Beglaubigung korrekt durchführt.
Am besten nutzen Sie in Ihrer Organisation einen eigenen Schlüssel zur Beglaubigung – den sogenannten Trusted Key. Den Fingerprint dieses Schlüssels können Administratoren direkt ins Active Directory eintragen. Alternativ hinterlegen Sie den Fingerprint für GnuPG beziehungsweise Gpg4win in der Datei "gpg. conf" (Option "trusted-key <CA-FINGERPRINT>"), zum Beispiel unter "C:\ Program Files (x86)\GnuPG VS-Desktop\ etc\gnupg(-vsd)".
In größeren Organisationen oder bei komplexeren Umgebungen wird das manuelle Beglaubigen schnell unpraktisch. Hier kommt eine automatisierte Lösung ins Spiel – GnuPG actium.
Automatisierung durch GnuPG actium
Das in Go geschriebene Programm GnuPG actium [11] vereinfacht die Zertifikatsverwaltung in Ihrer Organisation. Es automatisiert den Authentifizierungsprozess über einen LDAP-Verzeichnisdienst und verarbeitet auch PGP-Zertifikate, die als einzelne Dateien vorliegen. Das unter der GPLv3 stehende Tool läuft mit Windows und Linux, die aktuelle Version 1.1.0 stammt vom September 2024.
Actium überwacht den LDAP-Verzeichnisdienst, erkennt neue Zertifikate, ruft sie automatisch ab, validiert sie und verschickt eine verschlüsselte Bestätigungs-E-Mail an die Nutzer. Nur diejenigen mit Zugriff auf den geheimen Schlüssel können den Bestätigungslink aktivieren. Nach der Bestätigung beglaubigt actium das Zertifikat mit dem Trusted Key der Organisation und veröffentlicht es wieder im Verzeichnisdienst. Das Tool prüft dabei Benutzerkennungen und deren Zuordnung zur Domain oder Verzeichnisdienststruktur, um sicherzustellen, dass die Zertifikate von berechtigten Nutzern stammen.
Die Installation und Einrichtung erfolgen über die Eingabeaufforderung beziehungsweise die Kommandozeile; danach findet die Verwaltung über eine Weboberfläche im Browser statt.
Das Status-Dashboard von GnuPG actium bietet einen schnellen Überblick über die laufenden Zertifikatsprozesse.
Actium-Installation unter Windows und Linux
Stellen Sie für eine Installation unter Windows zuerst sicher, dass GnuPG-(VS-)Desktop oder Gpg4Win (ab Version 2.4.3) installiert ist. Für actium empfiehlt es sich, einen eigenen Benutzeraccount anzulegen. Falls Sie vorhaben, die User-IDs der Schlüssel gegen Ihr Active Directory zu prüfen, sollte dieses Konto Mitglied der entsprechenden Windows-Domäne sein.
Kopieren Sie die Dateien "actium.exe" und "gpgme-w32spawn.exe" in einen geeigneten Ordner, beispielsweise "C:\Program Files (X86)\gnupg-actium". Actium nutzt den GnuPG-Schlüsselbund – daher empfiehlt es sich, einen separaten GnuPG-Ordner einzurichten, um die persönliche GnuPG-Konfiguration nicht zu beeinflussen. Ein passender Speicherort wäre "C:\ gnupg-actium". Erstellen Sie darin die Unterordner "actium.d" und optional "actium.d\certs" für TLS-Zertifikate.
Damit das Tool den Zugriff auf seine Dateien hat, ergänzen Sie den Pfad zu "actium.exe" in der PATH-Umgebungsvariable und legen Sie eine GNUPGHOME-Variable an, die auf den Ordner "gnupg-actium" verweist. Alternativ können Sie eine Batch-Datei (zum Beispiel "start-actium.bat") im Hauptverzeichnis erstellen, um actium mit den notwendigen Umgebungsvariablen zu starten. Tippen Sie nun noch
actium initialize ein, um die benötigten Verzeichnisse und Dateien im Ordner "actium.d" anzulegen.
Um actium automatisch als Dienst zu starten, können Sie den Task Scheduler verwenden. Da der Ressourcenverbrauch der Software recht gering ist, ist es eine gute Idee, das Programm auf demselben Server zu betreiben, auf dem auch der LDAP-Verzeichnisdienst läuft.
Unter Linux benötigen Sie ebenfalls GnuPG, inklusive dirmngr und GPGME. Definieren Sie ein dediziertes GnuPG-Home-Verzeichnis, beispielsweise "/home/actium/gnupg" und erstellen Sie darin das Verzeichnis "actium.d". Dieses Verzeichnis dient als Home-Ordner und muss existieren, da actium sonst aus Sicherheitsgründen nicht startet. Initialisieren Sie die Software dann mit dem Parameter "--initialize", um die Ordnerstruktur und die erforderlichen Dateien anzulegen.
GnuPG actium arbeitet mit gängigen Init-Systemen zusammen und lässt sich daher problemlos beim Systemstart automatisch starten, überwachen und bei Bedarf neu starten, um eine kontinuierliche Verfügbarkeit sicherzustellen.
Konfiguration und Verwaltung von actium
Erstellen Sie die Datei "actium.conf", um dort LDAP- und SMTP-Server sowie den für die Beglaubigung nötigen Trusted Key einzutragen. Listing 2 zeigt eine Minimalkonfiguration. Details zu allen Optionen finden Sie auf der Actium-Manpage. Die Konfiguration des LDAP-Servers erfolgt wie zuvor beschrieben.
Listing 2: Actium-Konfiguration
Hinterlegen Sie für actium folgende Informationen zum Mailserver und zum Verzeichnisdienst:
certification-key <CA-Fingerprint>
certification-domains <Domain>…
domain-validation valid
# check against Active Directory
# (only on Windows, when actium user is logged into AD)
ad-validation all
# publish back to LDS
publish-processor ldap
# mail delivery
mail-delivery smtp
mail-smtp-server <Mailserver>
Nach der ersten Installation und auch nach Änderungen an der Konfiguration sollten Sie actium einmal von der Kommandozeile aus starten. Die Ausgabe zeigt mögliche Probleme und Fehlermeldungen an. Die Software schreibt ihr Protokoll (definiert in der Datei "actium.conf") erst nach dem erfolgreichen Parsen der Konfiguration ins Logfile.
Die Weboberfläche des Tools bietet eine übersichtliche, browserbasierte Steuerung und zeigt Ihnen den gesamten Zertifikatsprozess im Überblick. Die Oberfläche listet laufende Prozesse und den Status neuer und bereits signierter Zertifikate auf.
Im Status-Dashboard sehen Sie auf einen Blick, wie viele Zertifikate sich im Eingangsordner befinden, welche bereits geprüft und "ready" sind und welche für den Versand vorbereitet wurden.
Über das Webinterface greifen Sie bei Bedarf gezielt in jeden Prozess ein. Sie können Zertifikate pausieren, erneut prüfen oder direkt versenden. Besonders praktisch: Alle Befehle, die Sie sonst auf der Kommandozeile ausführen, lassen sich hier eingeben und steuern.
Fazit
Ob mit WKD, LDAP oder GnuPG actium – die richtige Schlüssel- und Zertifikatsverwaltung bringt Sicherheit und Effizienz in den Arbeitsalltag. Jeder der gezeigten Services hat seine Stärken, vom unkomplizierten Schlüsselabruf bis zur vollautomatisierten Zertifikatsbeglaubigung. Entscheidend ist, die Tools passend zur Organisationsstruktur und den Sicherheitsanforderungen auszuwählen und so die digitale Kommunikation bestmöglich abzusichern.