PKI und Zertifikatslebenszyklus
Zusammenfassung. Diese Seite beschreibt die CA-Hierarchie und den Lebenszyklus von Zertifikaten, Aufträgen und CA-Schlüsseln: Antrag, Auftrag, Freigabe, Ausstellung, Erneuerung, Sperrung, Statusverteilung, Offline-Wurzel und Zeremonien. Jede Organisation hat ihre eigene Hierarchie; die Abläufe gelten in jeder Installation gleich, unabhängig vom Betriebsmodell.
Begriffe
- Wurzel-CA – oberste CA, selbstsigniert, dauerhaft offline.
- Ausstellende CA – von der Wurzel zertifizierte CA einer Organisation oder eines Partners; stellt Systemzertifikate aus.
- CA-Generation – CA mit eigenem Schlüssel; ein Schlüsselwechsel erzeugt eine neue Generation.
- Profilvorlage – in der Verwaltung gepflegte Vorlage, aus der ein Auftrag erzeugt wird.
- Profilklasse – im Regelwerk des Workers festgelegte Kategorie mit verbindlichen Regeln (Laufzeit, Erweiterungen, Freigaberegel, manuell oder automatisch).
- CSR – Zertifikatsantrag nach PKCS #10 mit Signatur des Antragstellers als Besitznachweis.
Hierarchie
graph TD W[Wurzel-CA<br/>offline, Sicherheitsmodul] --> C1[Ausstellende CA Partner A<br/>nameConstraints: partner-a.example<br/>pathLen 0] W --> C2[Ausstellende CA Partner B<br/>nameConstraints: partner-b.example<br/>pathLen 0] C1 --> S1[lager.partner-a.example] C1 --> S2[maschine7.werk.partner-a.example] C2 --> S3[bestellung.partner-b.example] classDef off fill:#e1dfdd,stroke:#323130,color:#201f1e classDef ca fill:#fde7e9,stroke:#a4262c,color:#201f1e classDef ee fill:#deecf9,stroke:#0078d4,color:#201f1e class W off class C1,C2 ca class S1,S2,S3 ee
Der Inhalt eines CA-Zertifikats ist im Werkzeug der Wurzel fest vorgegeben und nicht frei
konfigurierbar: cA=TRUE, pathLenConstraint=0, keyUsage nur keyCertSign und cRLSign,
nameConstraints kritisch. Jeder Mandant hat mindestens eine eigene ausstellende CA; keine CA wird
zwischen Mandanten geteilt. Je Algorithmusgeneration gibt es eine eigene CA – eine klassische CA wird
nicht nachträglich hybrid, sondern durch eine hybride Generation abgelöst.
Zertifikatsinhalt
| Feld | Regel |
|---|---|
subjectAltName | genau ein dNSName im Namensraum der CA; rfc822Name, iPAddress und alle übrigen Arten nicht ausstellbar |
subject | beschreibend; O setzt der Worker aus dem Mandanten; nie sicherheitsrelevant |
| Seriennummer | vom Worker erzeugt, positive Zufallszahl mit mindestens 64 Bit Zufall, eindeutig je CA |
| Laufzeit | durch die Profilklasse begrenzt; Ausstellung nur, solange die Restlaufzeit der CA die längste Profillaufzeit übersteigt |
| Hybride Zertifikate | klassischer Subjektschlüssel; ML-DSA-Schlüssel in subjectAltPublicKeyInfo; Alternativsignatur der CA in altSignatureValue |
| Erweiterungen | nur, was die Profilklasse erlaubt, mit festgelegter Kritikalität |
Profile
Die folgenden Profile zeigen den Aufbau mit den Vorgabewerten. Parametersätze und Laufzeiten folgen Kryptographie und Post-Quanten-Übergang und den Vorgabewerten in Betrieb und Notfall.
Ausstellende CA eines Partners (hybrid)
Version: 3 Seriennummer: <vom Werkzeug der Wurzel, mindestens 64 Bit Zufall> Signaturalgorithmus: ecdsa-with-SHA384 (1.2.840.10045.4.3.3) Aussteller: CN=<Wurzel-CA> Gültigkeit: 5 Jahre (Vorgabe) Subjekt: CN=<Name der CA>, O=<Mandant> Öffentlicher Schlüssel: EC P-384 Erweiterungen: basicConstraints kritisch: cA=TRUE, pathLenConstraint=0 keyUsage kritisch: keyCertSign, cRLSign nameConstraints kritisch: permittedSubtrees dNSName=l.example subjectKeyIdentifier, authorityKeyIdentifier cRLDistributionPoints URL der Sperrliste der Wurzel (Verteilung) authorityInfoAccess caIssuers: URL des Wurzelzertifikats (Verteilung) subjectAltPublicKeyInfo (2.5.29.72) nicht kritisch: ML-DSA-87, 2.16.840.1.101.3.4.3.19 altSignatureAlgorithm (2.5.29.73) nicht kritisch: ML-DSA-87, 2.16.840.1.101.3.4.3.19 altSignatureValue (2.5.29.74) nicht kritisch: ML-DSA-Signatur der Wurzel
Systemzertifikat
Version: 3 Seriennummer: <vom CA-Worker, mindestens 64 Bit Zufall> Signaturalgorithmus: ecdsa-with-SHA384 Aussteller: CN=<Name der CA>, O=<Mandant> Gültigkeit: 30 Tage automatisch, höchstens 1 Jahr manuell Subjekt: CN=lager.l.example, O=<Mandant, vom Worker gesetzt> Öffentlicher Schlüssel: EC P-256 (vom System erzeugt) Erweiterungen: basicConstraints kritisch: cA=FALSE keyUsage kritisch: digitalSignature extendedKeyUsage serverAuth (1.3.6.1.5.5.7.3.1), clientAuth (1.3.6.1.5.5.7.3.2) nach Profilklasse subjectAltName dNSName=lager.l.example genau einer subjectKeyIdentifier, authorityKeyIdentifier cRLDistributionPoints URL der Sperrliste der CA authorityInfoAccess caIssuers: URL des CA-Zertifikats subjectAltPublicKeyInfo (2.5.29.72) ML-DSA-65 (vom System erzeugt) altSignatureAlgorithm (2.5.29.73) ML-DSA-87 altSignatureValue (2.5.29.74) ML-DSA-Signatur der CA
Agentenzertifikat. Schlüsselagenten prüfen sich nur gegenseitig; klassische Gegenstellen sehen
ihre Zertifikate nie. Ein Agentenzertifikat ist deshalb ein reines ML-DSA-Zertifikat nach RFC 9881:
Subjektschlüssel ML-DSA-65, Signatur der CA mit ML-DSA-87, subjectAltName mit dem DNS-Namen des
Rechners, extendedKeyUsage mit der Kennung für Schlüsselagenten, Laufzeit 30 Tage mit automatischer
Erneuerung.
Wirkung der Namensbeschränkung. Nach RFC 5280 erlaubt die Beschränkung dNSName=l.example den Namen
l.example und jeden Namen, der durch Voranstellen weiterer Labels entsteht, etwa lager.l.example oder
maschine7.werk.l.example; l.example.attacker.example und xl.example sind nicht erlaubt.
Ausstellung
sequenceDiagram participant AS as Antragsteller participant VE as Verwaltung oder Enrollment participant DB as Datenbank participant FG as Freigebende Person participant WK as CA-Worker participant RG as Register participant HS as Sicherheitsmodul AS->>VE: CSR (Besitznachweis), Profilvorlage, DNS-Name VE->>VE: CSR prüfen, Vorlage auflösen,<br/>Auftrag als JSON erzeugen VE->>DB: Auftrag (Bytes), Hash FG->>DB: Freigabe = Signatur über Hash WK->>DB: Auftrag und Freigaben lesen WK->>WK: Prüfung gegen Regelwerk WK->>RG: Absicht mit Seriennummer WK->>HS: TBS signieren (ML-DSA, dann klassisch) WK->>RG: Ergebnis WK->>DB: Projektion des Zertifikats DB-->>AS: Zertifikat über Verwaltung oder Protokoll
Inhalt eines Auftrags (Pflicht): Formatkennung und -fassung, Auftragskennung, Mandant, Herkunft, Korrelationskennung, Idempotenzschlüssel des Antragstellers, Antragsteller, ausstellende CA mit Fingerabdruck, Profilklasse, informativ Profilvorlage und Fassung, Zertifikatsart, öffentlicher Schlüssel (bei hybrid beide), CSR und Hash, Subject, SAN-Liste, vollständige Erweiterungen mit Kritikalität, Signaturalgorithmus, Gültigkeitsbeginn und -ende, geforderte Freigaberegel, Erstellungszeit, Frist. Nicht im Auftrag: die Seriennummer.
Prüfungen des Workers: Freigabe bzw. Attestierung gegen Regelwerk; Regel ist die für die Profilklasse vorgeschriebene (ein Auftrag kann sich keine mildere aussuchen); CA zugelassen und gehört zum Mandanten; Besitznachweis (bei hybrid für beide Schlüssel); Name im Namensraum; nur erlaubte Erweiterungen; Laufzeit; Frist; Auftrag nicht storniert; Auftrag noch nicht ausgeführt.
Zustände eines Auftrags
stateDiagram [*] --> pending_approval : Auftrag erzeugt pending_approval --> approval_complete : Freigaben eingereicht pending_approval --> canceled : Stornierung approval_complete --> claimed : Worker beginnt approval_complete --> canceled : Stornierung claimed --> issued : Ergebnis im Register claimed --> rejected : Regelverstoß oder Höchstzahl Versuche pending_approval --> expired : Frist überschritten issued --> [*] rejected --> [*] canceled --> [*] expired --> [*]
pending_approval, approval_complete und claimed stehen in der Datenbank; issued und
rejected sind verbindlich nur im Register und werden in die Datenbank gespiegelt. Kommt eine
Stornierung zu spät, wird das bereits ausgestellte Zertifikat gesperrt. Die Zustandsnamen sind die Werte,
die die Verwaltungs-API liefert.
Genau einmal ausstellen
| Situation | Verhalten |
|---|---|
| Absturz nach der Absicht, vor der Signatur | Neustart signiert die offene Absicht mit derselben Seriennummer und demselben vorbereiteten Inhalt |
| Absturz nach der Signatur, vor dem Ergebniseintrag | wie oben; die erste Signatur hat den Worker nie verlassen |
| Absturz nach dem Ergebniseintrag, vor der Projektion | Projektion wird nachgeholt; sie ist idempotent |
| Zwei Worker für dieselbe CA | ausgeschlossen durch exklusive Dateisperre auf das Register |
| Wiederherstellung des Registers aus einer Sicherung | Worker übernimmt projizierte Zertifikate mit gültiger CA-Signatur, bevor er neue Aufträge abarbeitet |
Erneuerung
Eine Erneuerung ist ein neuer Antrag mit neuem Auftrag; das alte Zertifikat bleibt bis zu seinem Ablauf gültig. Automatische Profilklassen erneuern, sobald nur noch ein Drittel der Laufzeit übrig ist; die Mindestlaufzeit beträgt drei Tage. Manuelle Klassen verlangen eine neue Freigabe.
Sperrung
sequenceDiagram participant P as Person oder Inhaber participant V as Verwaltung oder Protokoll participant D as Datenbank participant W as CA-Worker participant R as Register participant T as Verteilung P->>V: Sperrauftrag (CA, Seriennummer, Grund) V->>D: Sperrauftrag W->>D: Sperrauftrag lesen W->>R: Zertifikat im Register? CA, Mandant? W->>R: Sperrung eintragen (Zeitpunkt = Eintrag) W->>W: neue Sperrliste, CRL-Nummer + 1 W->>D: Sperrliste (Weg 1) W->>T: Sperrliste (Weg 2) T->>T: Signatur prüfen, höchste Nummer ausliefern
| Regel | Festlegung |
|---|---|
| Schlüssel des Sperrauftrags | ausstellende CA und Seriennummer; Wiederholung ändert nichts |
| Autorisierung | über die Verwaltung eine angemeldete Person mit Sperrrecht im Mandanten; über ein Protokoll der Inhaber mit Nachweis über den Schlüssel des Zertifikats (geprüft mit dem Schlüssel aus dem Register) |
| Sperrgründe | Bezeichner aus RFC 5280 Abschnitt 5.3.1, ohne removeFromCRL |
| Sperrzeitpunkt | Zeitpunkt des Registereintrags, nicht rückdatiert |
| Monotonie | eine Sperrung ist endgültig; certificateHold mit späterer Aufhebung ist nicht vorgesehen |
| Wettlauf mit Ausstellung | Reihenfolge im Register entscheidet; ein Sperrauftrag für ein noch nicht ausgestelltes Zertifikat wartet oder läuft ab |
| CA-Sperrung | nie über diesen Weg, nur in einer Zeremonie an der Wurzel |
| Notsperrung | an der Konsole des Worker-Hosts, auch ohne Datenbank |
Statusverteilung
| Parameter | Wert | Begründung |
|---|---|---|
Gültigkeit einer Sperrliste (nextUpdate − thisUpdate) | 72 Stunden | Puffer für Ausfälle |
| Erzeugungstakt | 6 Stunden und sofort nach jeder Sperrung | begrenzt die Verzögerung |
| Ladetakt der Gegenstellen | 6 Stunden | Prüfer-Vertrag, Punkt 10 |
| Puffer bei Ausfall des Workers | 66 Stunden | Gültigkeit minus Takt |
| Delta-Sperrlisten | nicht angeboten | Sperrlisten einer ausstellenden CA bleiben klein genug für den Ladetakt |
| OCSP | nicht angeboten | Signatur im Anfragepfad ausgeschlossen; der TLS-Adapter lädt Sperrlisten im Takt |
Schlüssellebenszyklus der CAs
stateDiagram [*] --> erzeugt : im Sicherheitsmodul erzeugt --> zertifiziert : Zeremonie zertifiziert --> aktiv : im Regelwerk freigeschaltet aktiv --> nur_sperrlisten : Restlaufzeit kleiner als längste Profillaufzeit nur_sperrlisten --> stillgelegt : letztes ausgestelltes Zertifikat abgelaufen stillgelegt --> vernichtet : Zeremonie aktiv --> stillgelegt : Kompromittierung vernichtet --> [*]
- Wechsel (Rollover): Ein neuer Schlüssel ist eine neue CA-Generation mit neuem Zertifikat; derselbe Schlüssel wird nicht neu zertifiziert. Die alte Generation signiert nur noch Sperrlisten.
- Sicherung: nur über den Mechanismus des Sicherheitsmoduls und unter Mehrpersonenregel.
- PIN: im Geheimnisspeicher des Betriebssystems des Worker-Hosts; Zeremonien unter Quorum.
- Überwachung: Signaturzähler des Moduls werden mit dem Register abgeglichen; eine Abweichung ist ein Kompromittierungsverdacht.
Offline-Wurzel und Zeremonie
sequenceDiagram participant L as Zeremonieleitung participant V as Verwahrer (Quorum) participant Z as Zeuge participant R as Wurzel (offline) participant K as Zweiter Kanal L->>R: CSR der ausstellenden CA (Datenträger) K->>L: Fingerabdruck des Schlüssels und Namensraum,<br/>abgelesen an der Konsole des Worker-Hosts L->>L: Abgleich CSR gegen zweiten Kanal V->>R: Aktivierung des Wurzelschlüssels R->>R: CA-Zertifikat mit festem Inhalt signieren Z->>Z: Protokoll gegenzeichnen R->>L: CA-Zertifikat, Wurzel-Sperrliste,<br/>öffentlicher Teil des Protokolls
| Regel | Festlegung |
|---|---|
| Herkunft der Eingaben | nichts, was die Wurzel signiert, stammt allein aus dem Online-System; Schlüssel und Namensraum werden über einen zweiten Kanal bestätigt |
| Zulässige Artefakte hinein | CSR, Zeremonieauftrag, Sperrauftrag einer CA |
| Zulässige Artefakte heraus | CA-Zertifikat (in das Regelwerk), Wurzelzertifikat, Sperrliste der Wurzel (vom Worker vor Veröffentlichung geprüft), öffentlicher Teil des Protokolls |
| Rollen | Zeremonieleitung, Verwahrer, Zeuge |
| Aufbewahrung | zwei Tresore an getrennten Orten; Tabelle der Wiederherstellung |
| Nachweis | eigenes Register der Wurzel; Kettenkopf des Worker-Registers wird in jede Zeremonie aufgenommen |
Laufzeiten, Quoren, Takt der Zeremonien und nextUpdate der Wurzel-Sperrliste stehen als
Vorgabewerte auf der Seite Betrieb und Notfall.
Was diese Seite nicht festlegt
- Keine Vertrauensbeziehungen zwischen Organisationen; sie beschreibt Föderation und bilaterales Vertrauen.
- Kein OCSP. Die Statusauskunft erfolgt über Sperrlisten, die der TLS-Adapter im Takt lädt.
- Keine Personenzertifikate für die Anmeldung von Menschen an Anwendungen. TrustBridge identifiziert Systeme, Dienste und Agenten; persönliche Freigabe-Schlüssel dienen nur der Freigabe.