Inhaltsverzeichnis
Runbook: Zertifikat widerrufen
Dauer: ~5 Minuten
Rolle: PKI-Operator / Security
Priorität: HOCH bei Kompromittierung
Workflow
flowchart TD
A[Widerrufsanfrage] --> B{Grund?}
B -->|Kompromittierung| C[SOFORT sperren]
B -->|Ablösung| D[Geplant sperren]
B -->|Fehler| E[Prüfen + sperren]
C --> F[CRL aktualisieren]
D --> F
E --> F
F --> G[CRL verteilen]
G --> H[OCSP aktualisieren]
H --> I[Benachrichtigung]
I --> J[Dokumentation]
style C fill:#ffebee
style F fill:#fff3e0
style G fill:#e3f2fd
Widerrufsgründe (RFC 5280)
| Code | Grund | Wann verwenden |
| —— | ——- | —————- |
| 0 | unspecified | Standard (nicht empfohlen) |
| 1 | keyCompromise | Privater Schlüssel kompromittiert |
| 2 | cACompromise | CA kompromittiert |
| 3 | affiliationChanged | Organisation gewechselt |
| 4 | superseded | Durch neues Zertifikat ersetzt |
| 5 | cessationOfOperation | Dienst eingestellt |
| 9 | privilegeWithdrawn | Berechtigung entzogen |
Schritt 1: Zertifikat identifizieren
# Nach Seriennummer suchen openssl x509 -in certificate.pem -serial -subject -noout # In CA-Datenbank suchen grep -r "CN=server.example.com" /etc/pki/CA/index.txt
# PowerShell: Zertifikat finden Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*server.example.com*" } | Select-Object SerialNumber, Subject, Thumbprint
Schritt 2: Widerruf durchführen
OpenSSL (CLI)
# Zertifikat widerrufen openssl ca -config openssl.cnf \ -revoke /path/to/certificate.pem \ -crl_reason keyCompromise # Alternative: Nach Seriennummer openssl ca -config openssl.cnf \ -revoke_by_serial 01234567890ABCDEF \ -crl_reason keyCompromise
C# (WvdS.System.Security.Cryptography)
// Zertifikat widerrufen und CRL erstellen var crlBuilder = new CertificateRevocationListBuilder(); // Widerruf hinzufügen crlBuilder.AddEntry( revokedCert.SerialNumber, DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise); // CRL signieren (Hybrid-Modus) using var issuerCert = new X509Certificate2("ca.pfx", "password"); var crlNumber = BigInteger.Parse("42"); var nextUpdate = DateTimeOffset.UtcNow.AddDays(7); byte[] crl = crlBuilder.Build( issuerCert, crlNumber, nextUpdate, HashAlgorithmName.SHA384, CryptoMode.Hybrid); File.WriteAllBytes("crl.der", crl);
Schritt 3: CRL generieren und verteilen
# Neue CRL generieren openssl ca -config openssl.cnf -gencrl -out crl.pem # CRL in DER-Format konvertieren (für Distribution) openssl crl -in crl.pem -outform DER -out crl.der # CRL prüfen openssl crl -in crl.pem -text -noout
Distribution Points:
| Methode | Ziel | Befehl |
| ——— | —— | ——– |
| HTTP | Web-Server | cp crl.der /var/www/pki/crl.der |
| LDAP | Active Directory | ldapmodify -f update-crl.ldif |
| CDP | In Zertifikat | Automatisch via URL |
# CRL auf Web-Server kopieren scp crl.der webserver:/var/www/html/pki/crl.der # Nginx/Apache Reload (falls Cache) ssh webserver "systemctl reload nginx"
Schritt 4: OCSP aktualisieren (falls verwendet)
# OCSP-Responder Index aktualisieren (automatisch bei OpenSSL CA) # Der Responder liest /etc/pki/CA/index.txt # OCSP-Response testen openssl ocsp \ -issuer intermediate.pem \ -cert certificate.pem \ -url http://ocsp.example.com \ -resp_text
Erwartete Antwort nach Widerruf:
Cert Status: revoked Revocation Time: Dec 15 10:30:00 2024 GMT Revocation Reason: keyCompromise
Schritt 5: Benachrichtigung
Pflicht-Benachrichtigungen:
| Empfänger | Methode | Inhalt |
| ———– | ——— | ——– |
| Zertifikatsinhaber | Seriennummer, Grund, nächste Schritte | |
| Security Team | Ticket | Incident-Details |
| Betroffene Systeme | Alert | Automatisch via Monitoring |
# E-Mail-Template senden cat << 'EOF' | mail -s "Zertifikat widerrufen - Aktion erforderlich" admin@example.com Zertifikat wurde widerrufen: Seriennummer: 01:23:45:67:89:AB:CD:EF Subject: CN=server.example.com Grund: Key Compromise Datum: $(date -Iseconds) Aktion erforderlich: 1. Dienst mit neuem Zertifikat konfigurieren 2. Altes Zertifikat aus allen Systemen entfernen Bei Fragen: pki-team@example.com EOF
Schritt 6: Dokumentation
| Feld | Wert |
| —— | —— |
| Seriennummer | 01:23:45:67:89:AB:CD:EF |
| Subject | CN=server.example.com |
| Widerrufsgrund | keyCompromise |
| Widerrufsdatum | 2024-12-15 10:30:00 UTC |
| CRL-Nummer | 42 |
| Operator | Operator-Name |
| Ticket | SEC-2024-0815 |
Notfall: Massen-Widerruf
Bei CA-Kompromittierung: → Notfall-Revocation Runbook
# Alle Zertifikate einer CA widerrufen for cert in /etc/pki/CA/newcerts/*.pem; do openssl ca -config openssl.cnf -revoke "$cert" -crl_reason cACompromise done # Neue CRL mit kurzer Gültigkeit openssl ca -config openssl.cnf -gencrl -crldays 1 -out emergency-crl.pem
Checkliste
| # | Prüfpunkt | ✓ |
| — | ———– | — |
| 1 | Zertifikat in CRL eingetragen | ☐ |
| 2 | CRL signiert und gültig | ☐ |
| 3 | CRL auf allen CDPs verfügbar | ☐ |
| 4 | OCSP antwortet revoked | ☐ |
| 5 | Zertifikatsinhaber benachrichtigt | ☐ |
| 6 | Security-Ticket dokumentiert | ☐ |
Fehlerbehebung
| Problem | Ursache | Lösung |
| ——— | ——— | ——– |
already revoked | Doppelter Widerruf | Ignorieren |
unknown serial | Nicht von dieser CA | CA prüfen |
| CRL ungültig | Signatur-Fehler | CA-Key prüfen |
OCSP antwortet good | Cache/Sync | OCSP-Responder neustarten |
Verwandte Runbooks
- Zertifikat ausstellen – Ersatzzertifikat
- Notfall-Revocation – Massen-Widerruf
- Validierung Kurzreferenz – CRL/OCSP-Prüfung
« ← Zertifikat erneuern | → Health Check »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: den 29.01.2026 um 15:13