Inhaltsverzeichnis
Runbook: Opoziv certifikata
Trajanje: ~5 minuta
Uloga: PKI operator / Security
Prioritet: VISOK kod kompromitacije
Workflow
flowchart TD
A[Zahtjev za opoziv] --> B{Razlog?}
B -->|Kompromitacija| C[ODMAH blokirati]
B -->|Zamjena| D[Planirano blokiranje]
B -->|Greška| E[Provjera + blokiranje]
C --> F[Ažuriranje CRL-a]
D --> F
E --> F
F --> G[Distribucija CRL-a]
G --> H[Ažuriranje OCSP-a]
H --> I[Obavijest]
I --> J[Dokumentacija]
style C fill:#ffebee
style F fill:#fff3e0
style G fill:#e3f2fd
Razlozi opoziva (RFC 5280)
| Kod | Razlog | Kada koristiti |
| —– | ——– | —————- |
| 0 | unspecified | Standard (ne preporučuje se) |
| 1 | keyCompromise | Privatni ključ kompromitiran |
| 2 | cACompromise | CA kompromitiran |
| 3 | affiliationChanged | Promjena organizacije |
| 4 | superseded | Zamijenjen novim certifikatom |
| 5 | cessationOfOperation | Usluga ukinuta |
| 9 | privilegeWithdrawn | Ovlasti opozvane |
Korak 1: Identifikacija certifikata
# Pretraživanje po serijskom broju openssl x509 -in certificate.pem -serial -subject -noout # Pretraživanje u CA bazi podataka grep -r "CN=server.example.com" /etc/pki/CA/index.txt
# PowerShell: Pronalaženje certifikata Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*server.example.com*" } | Select-Object SerialNumber, Subject, Thumbprint
Korak 2: Provođenje opoziva
OpenSSL (CLI)
# Opoziv certifikata openssl ca -config openssl.cnf \ -revoke /path/to/certificate.pem \ -crl_reason keyCompromise # Alternativa: Po serijskom broju openssl ca -config openssl.cnf \ -revoke_by_serial 01234567890ABCDEF \ -crl_reason keyCompromise
C# (WvdS.System.Security.Cryptography)
// Opoziv certifikata i kreiranje CRL-a var crlBuilder = new CertificateRevocationListBuilder(); // Dodavanje opoziva crlBuilder.AddEntry( revokedCert.SerialNumber, DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise); // Potpisivanje CRL-a (hibridni način) 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);
Korak 3: Generiranje i distribucija CRL-a
# Generiranje novog CRL-a openssl ca -config openssl.cnf -gencrl -out crl.pem # Konverzija CRL-a u DER format (za distribuciju) openssl crl -in crl.pem -outform DER -out crl.der # Provjera CRL-a openssl crl -in crl.pem -text -noout
Distribution Points:
| Metoda | Cilj | Naredba |
| ——– | —— | ——— |
| HTTP | Web server | cp crl.der /var/www/pki/crl.der |
| LDAP | Active Directory | ldapmodify -f update-crl.ldif |
| CDP | U certifikatu | Automatski putem URL-a |
# Kopiranje CRL-a na web server scp crl.der webserver:/var/www/html/pki/crl.der # Nginx/Apache Reload (ako postoji cache) ssh webserver "systemctl reload nginx"
Korak 4: Ažuriranje OCSP-a (ako se koristi)
# Ažuriranje OCSP responder indexa (automatski kod OpenSSL CA) # Responder čita /etc/pki/CA/index.txt # Testiranje OCSP odgovora openssl ocsp \ -issuer intermediate.pem \ -cert certificate.pem \ -url http://ocsp.example.com \ -resp_text
Očekivani odgovor nakon opoziva:
Cert Status: revoked Revocation Time: Dec 15 10:30:00 2024 GMT Revocation Reason: keyCompromise
Korak 5: Obavijest
Obavezne obavijesti:
| Primatelj | Metoda | Sadržaj |
| ———– | ——– | ——— |
| Vlasnik certifikata | Serijski broj, razlog, sljedeći koraci | |
| Security tim | Ticket | Detalji incidenta |
| Pogođeni sustavi | Alert | Automatski putem monitoringa |
# Slanje e-mail predloška cat << 'EOF' | mail -s "Certifikat opozvan - Potrebna akcija" admin@example.com Certifikat je opozvan: Serijski broj: 01:23:45:67:89:AB:CD:EF Subject: CN=server.example.com Razlog: Key Compromise Datum: $(date -Iseconds) Potrebna akcija: 1. Konfiguriranje usluge s novim certifikatom 2. Uklanjanje starog certifikata iz svih sustava Za pitanja: pki-team@example.com EOF
Korak 6: Dokumentacija
| Polje | Vrijednost |
| ——- | ———— |
| Serijski broj | 01:23:45:67:89:AB:CD:EF |
| Subject | CN=server.example.com |
| Razlog opoziva | keyCompromise |
| Datum opoziva | 2024-12-15 10:30:00 UTC |
| CRL broj | 42 |
| Operator | Ime operatera |
| Ticket | SEC-2024-0815 |
Nužda: Masovni opoziv
Kod kompromitacije CA: → Runbook za hitni opoziv
# Opoziv svih certifikata jednog CA for cert in /etc/pki/CA/newcerts/*.pem; do openssl ca -config openssl.cnf -revoke "$cert" -crl_reason cACompromise done # Novi CRL s kratkim rokom valjanosti openssl ca -config openssl.cnf -gencrl -crldays 1 -out emergency-crl.pem
Kontrolna lista
| # | Točka provjere | ✓ |
| — | —————- | — |
| 1 | Certifikat upisan u CRL | ☐ |
| 2 | CRL potpisan i valjan | ☐ |
| 3 | CRL dostupan na svim CDP-ovima | ☐ |
| 4 | OCSP odgovara revoked | ☐ |
| 5 | Vlasnik certifikata obaviješten | ☐ |
| 6 | Security ticket dokumentiran | ☐ |
Rješavanje problema
| Problem | Uzrok | Rješenje |
| ——— | ——- | ———- |
already revoked | Dvostruki opoziv | Ignorirati |
unknown serial | Nije od ovog CA | Provjeriti CA |
| CRL nevaljan | Greška potpisa | Provjeriti CA ključ |
OCSP odgovara good | Cache/Sync | Ponovno pokrenuti OCSP responder |
Povezani runbookovi
- Izdavanje certifikata – Zamjenski certifikat
- Hitni opoziv – Masovni opoziv
- Kratki pregled validacije – Provjera CRL/OCSP
« ← Obnova certifikata | → Health Check »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: 30.01.2026. u 06:35