Eine Root CA ist der wichtigste Vertrauensanker einer Zertifikatsstruktur.
Wird ihr Private Key kompromittiert, können Angreifer Zertifikate ausstellen, die scheinbar zur eigenen PKI gehören. Geht der Schlüssel dagegen verloren, können keine neuen Intermediate-CA-Zertifikate mehr ausgestellt werden.
Deshalb verwenden wir die Root CA nicht für tägliche Aufgaben.
Unsere Aufgabenverteilung sieht so aus:
Root CA └── stellt nur Intermediate-CA-Zertifikate aus Intermediate CA ├── stellt Producer-Zertifikate aus └── stellt Recipient-Zertifikate aus
Die Root CA wird nur selten benötigt. Die operativen Zertifikate werden von der Intermediate CA ausgestellt.
Lernumgebung und produktiver Betrieb
Die OpenSSL-Beispiele in diesem How-to zeigen die grundlegenden Schutzmaßnahmen.
Für eine produktive PKI reichen einfache PEM-Dateien möglicherweise nicht aus. Abhängig vom Schutzbedarf sollte der Root Private Key in einem Hardware Security Module oder einem vergleichbar geschützten kryptografischen System erzeugt und verwendet werden.
Dieser How-to ersetzt kein organisationsspezifisches Sicherheits- und Schlüsselmanagementkonzept.
Den Root Private Key verschlüsseln
Im vorherigen How-to haben wir den Root Private Key unverschlüsselt erzeugt:
root-ca-key.pem
Für einen besser geschützten Betrieb erzeugen wir den Schlüssel von Anfang an verschlüsselt:
openssl genpkey \ -algorithm RSA \ -aes-256-cbc \ -pkeyopt rsa_keygen_bits:3072 \ -out root-ca-key.pem
OpenSSL fragt nach einer Passphrase.
Diese Passphrase schützt die PEM-Datei, falls jemand Zugriff auf das Speichermedium erhält.
Die Passphrase sollte:
- lang und nicht leicht zu erraten sein;
- nur autorisierten Personen bekannt sein;
- nicht in Skripten oder Befehlszeilen gespeichert werden;
- getrennt vom Private Key aufbewahrt werden.
Die Passphrase darf nicht über die Option -passout direkt in einen gemeinsam genutzten Befehl geschrieben werden. Sie könnte sonst in Shell-Verläufen, Protokollen oder Prozessinformationen erscheinen.
Einen bestehenden Root Private Key verschlüsseln
Existiert bereits ein unverschlüsselter Root Private Key, kann eine verschlüsselte Kopie erzeugt werden:
openssl pkey \ -in root-ca-key.pem \ -aes-256-cbc \ -out root-ca-key-encrypted.pem
Die verschlüsselte Kopie prüfen wir mit:
openssl pkey \ -in root-ca-key-encrypted.pem \ -check \ -noout
Das erwartete Ergebnis lautet:
Key is valid
Erst nachdem die verschlüsselte Kopie erfolgreich geprüft und sicher gesichert wurde, sollte entschieden werden, wie die unverschlüsselte Ausgangsdatei sicher entfernt wird.
Ein gewöhnliches Löschen garantiert bei modernen Dateisystemen, SSDs, Snapshots und Backups nicht, dass alle Kopien tatsächlich verschwunden sind.
Dateizugriff einschränken
Auf Unix-basierten Systemen beschränken wir den Zugriff auf den Eigentümer:
chmod 600 root-ca-key.pem
Die Berechtigungen können wir kontrollieren mit:
ls -l root-ca-key.pem
Das Ergebnis sollte sinngemäß so aussehen:
-rw------- root-ca-key.pem
Dateiberechtigungen ersetzen keine Verschlüsselung. Beide Maßnahmen schützen gegen unterschiedliche Risiken.
Die Root CA offline halten
Die Root CA sollte nicht dauerhaft auf einem gewöhnlichen Arbeitsplatzrechner oder Server verfügbar sein.
Für unser Beispiel bedeutet „offline“:
- Der Root Private Key liegt auf einem separaten geschützten System oder Speichermedium.
- Das System ist normalerweise ausgeschaltet.
- Es ist nicht dauerhaft mit einem Netzwerk verbunden.
- Die Root CA wird nur für vorher festgelegte CA-Vorgänge aktiviert.
- Nach dem Vorgang wird sie wieder sicher abgeschaltet und verwahrt.
Die Root CA wird insbesondere benötigt, um:
- ein neues Intermediate-CA-Zertifikat auszustellen;
- ein Intermediate-CA-Zertifikat zu erneuern;
- einen geplanten Wechsel der Intermediate CA durchzuführen.
Sie wird nicht benötigt, um:
- Package Manifests zu signieren;
- KAP-KDMs zu signieren;
- Producer-Zertifikate auszustellen;
- Recipient-Zertifikate auszustellen.
Diese operativen Aufgaben übernimmt die Intermediate CA beziehungsweise der Producer.
Intermediate CA für den laufenden Betrieb verwenden
Die Intermediate CA darf Endzertifikate ausstellen:
Intermediate CA ├── Producer Certificate └── Recipient Certificate
Ihr Zertifikat enthält:
CA:TRUE pathlen:0
CA:TRUE erlaubt das Ausstellen von Zertifikaten.
pathlen:0 verhindert, dass die Intermediate CA weitere untergeordnete CAs ausstellt.
Die Intermediate CA kann auf einem kontrollierten operativen System betrieben werden. Ihr Private Key muss weiterhin geschützt werden, darf aber unter definierten Sicherheitsbedingungen häufiger verwendet werden als der Root Private Key.
Sichere Backups anlegen
Der Verlust des Root Private Key kann dazu führen, dass die bestehende PKI nicht mehr regulär erneuert werden kann.
Deshalb sollte es mindestens ein geprüftes Backup geben.
Für Backups gelten dieselben Schutzanforderungen wie für den Originalschlüssel:
- Der Private Key bleibt verschlüsselt.
- Backup und Passphrase werden getrennt aufbewahrt.
- Der Zugriff ist auf autorisierte Personen beschränkt.
- Die Backup-Medien liegen an getrennten geschützten Orten.
- Die Wiederherstellung wird kontrolliert getestet.
- Jede vorhandene Kopie wird dokumentiert.
Ein Backup ist erst dann verlässlich, wenn geprüft wurde, dass es tatsächlich gelesen und verwendet werden kann.
Dazu kann die Schlüsseldatei geprüft werden:
openssl pkey \ -in root-ca-key-backup.pem \ -check \ -noout
Der Test sollte in einer kontrollierten Umgebung erfolgen. Der wiederhergestellte Schlüssel darf dabei nicht ungeschützt zurückbleiben.
Root-CA-Vorgänge dokumentieren
Jede Verwendung der Root CA sollte nachvollziehbar dokumentiert werden.
Dazu gehören mindestens:
- Datum und Zweck des Vorgangs;
- beteiligte autorisierte Personen;
- Seriennummer und Gültigkeitszeitraum des ausgestellten Zertifikats;
- verwendete Zertifikatsrichtlinie;
- Ergebnis der anschließenden Zertifikatsprüfung;
- Aufbewahrungsort der aktualisierten öffentlichen Zertifikate;
- besondere Vorkommnisse oder Abweichungen.
Für einen produktiven Betrieb sollte außerdem festgelegt werden, ob ein Root-CA-Vorgang nur durch mehrere gemeinsam handelnde Personen freigegeben werden darf.
Ausgestellte Zertifikate prüfen
Nach dem Ausstellen eines Intermediate-CA-Zertifikats prüfen wir die Verbindung zur Root CA:
openssl verify \ -CAfile root-ca.pem \ intermediate-ca.pem
Das erwartete Ergebnis lautet:
intermediate-ca.pem: OK
Zusätzlich sehen wir das Zertifikat an:
openssl x509 \ -in intermediate-ca.pem \ -text \ -noout
Wir prüfen insbesondere:
Issuer: KAPRI Example Root CA Subject: KAPRI Example Intermediate CA CA:TRUE pathlen:0 Key Usage: Certificate Sign, CRL Sign
Erst nach erfolgreicher Prüfung wird das Intermediate-CA-Zertifikat für den operativen Betrieb freigegeben.
Auf einen Schlüsselverlust vorbereitet sein
Für den Ausfall einer CA müssen zwei Fälle unterschieden werden.
Der Root Private Key ist verloren
Ist der Schlüssel nicht mehr verfügbar, aber nachweislich nicht kompromittiert, können bestehende Zertifikatsketten zunächst weiterhin geprüft werden.
Die Root CA kann jedoch keine neuen Intermediate-CA-Zertifikate mehr ausstellen. Ohne verwendbares Backup muss eine neue Root CA aufgebaut und sicher verteilt werden.
Der Root Private Key ist möglicherweise kompromittiert
Bei einer möglichen Kompromittierung darf der Schlüssel nicht weiterverwendet werden.
Dann müssen insbesondere:
- die betroffene Root CA außer Betrieb genommen werden;
- alle von ihr abhängigen Zertifikate als nicht mehr vertrauenswürdig behandelt werden;
- eine neue Root CA mit einem neuen Schlüsselpaar aufgebaut werden;
- neue Intermediate-, Producer- und Recipient-Zertifikate ausgestellt werden;
- betroffene Systeme und Vertrauensspeicher aktualisiert werden;
- Ursache und Umfang des Vorfalls untersucht und dokumentiert werden.
Ein solcher Ablauf sollte festgelegt werden, bevor ein tatsächlicher Vorfall eintritt.
Ergebnis
Für den sicheren Betrieb unserer privaten Root CA gelten fünf grundlegende Regeln:
Root Private Key verschlüsseln
↓
Zugriff stark beschränken
↓
Root CA möglichst offline halten
↓
Intermediate CA für operative Zertifikate verwenden
↓
Backups und Notfallverfahren vorbereitenDie Root CA wird nur selten eingesetzt.
Die Intermediate CA übernimmt die Ausstellung von Producer- und Recipient-Zertifikaten.
Der Producer signiert Package Manifests und KAP-KDMs.
Das Recipient-Zertifikat wird zur recipient-spezifischen Verschlüsselung von File Keys verwendet.
Durch diese Trennung bleibt der wichtigste Vertrauensanker der Zertifikatsstruktur vor den Risiken des täglichen Betriebs geschützt.