====== Navodilo: Preklic certifikata ====== **Trajanje:** ~5 minut \\ **Vloga:** PKI operater / Varnost \\ **Prioriteta:** VISOKA ob ogroženosti ---- ===== Potek dela ===== flowchart TD A[Zahteva za preklic] --> B{Razlog?} B -->|Ogroženost| C[TAKOJ blokirati] B -->|Zamenjava| D[Načrtovano blokirati] B -->|Napaka| E[Preveriti + blokirati] C --> F[Posodobiti CRL] D --> F E --> F F --> G[Distribuirati CRL] G --> H[Posodobiti OCSP] H --> I[Obvestilo] I --> J[Dokumentacija] style C fill:#ffebee style F fill:#fff3e0 style G fill:#e3f2fd ---- ===== Razlogi za preklic (RFC 5280) ===== | Koda | Razlog | Kdaj uporabiti | |------|--------|----------------| | 0 | unspecified | Privzeto (ni priporočeno) | | 1 | keyCompromise | **Zasebni ključ ogrožen** | | 2 | cACompromise | CA ogrožen | | 3 | affiliationChanged | Sprememba organizacije | | 4 | superseded | Nadomeščen z novim certifikatom | | 5 | cessationOfOperation | Storitev ukinjena | | 9 | privilegeWithdrawn | Pooblastilo odvzeto | ---- ===== Korak 1: Identifikacija certifikata ===== # Iskanje po serijski stevilki openssl x509 -in certificate.pem -serial -subject -noout # Iskanje v CA bazi podatkov grep -r "CN=server.example.com" /etc/pki/CA/index.txt # PowerShell: Iskanje certifikata Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*server.example.com*" } | Select-Object SerialNumber, Subject, Thumbprint ---- ===== Korak 2: Izvedba preklica ===== ==== OpenSSL (CLI) ==== # Preklic certifikata openssl ca -config openssl.cnf \ -revoke /path/to/certificate.pem \ -crl_reason keyCompromise # Alternativa: Po serijski stevilki openssl ca -config openssl.cnf \ -revoke_by_serial 01234567890ABCDEF \ -crl_reason keyCompromise ==== C# (WvdS.System.Security.Cryptography) ==== // Preklic certifikata in ustvarjanje CRL var crlBuilder = new CertificateRevocationListBuilder(); // Dodajanje preklica crlBuilder.AddEntry( revokedCert.SerialNumber, DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise); // Podpisovanje CRL (hibridni nacin) 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 in distribucija CRL ===== # Generiranje novega CRL openssl ca -config openssl.cnf -gencrl -out crl.pem # Pretvorba CRL v DER obliko (za distribucijo) openssl crl -in crl.pem -outform DER -out crl.der # Preverjanje CRL openssl crl -in crl.pem -text -noout **Distribucijske točke:** | Metoda | Cilj | Ukaz | |--------|------|------| | HTTP | Spletni strežnik | ''cp crl.der /var/www/pki/crl.der'' | | LDAP | Active Directory | ''ldapmodify -f update-crl.ldif'' | | CDP | V certifikatu | Samodejno preko URL | # Kopiranje CRL na spletni streznik scp crl.der webserver:/var/www/html/pki/crl.der # Ponoven zagon Nginx/Apache (ce je predpomnilnik) ssh webserver "systemctl reload nginx" ---- ===== Korak 4: Posodobitev OCSP (če se uporablja) ===== # Posodobitev indeksa OCSP odzivnika (samodejno pri OpenSSL CA) # Odzivnik bere /etc/pki/CA/index.txt # Test OCSP odziva openssl ocsp \ -issuer intermediate.pem \ -cert certificate.pem \ -url http://ocsp.example.com \ -resp_text **Pričakovan odziv po preklicu:** Cert Status: revoked Revocation Time: Dec 15 10:30:00 2024 GMT Revocation Reason: keyCompromise ---- ===== Korak 5: Obvestilo ===== **Obvezna obvestila:** | Prejemnik | Metoda | Vsebina | |-----------|--------|---------| | Imetnik certifikata | E-pošta | Serijska številka, razlog, naslednji koraki | | Varnostna ekipa | Zahtevek | Podrobnosti incidenta | | Prizadeti sistemi | Opozorilo | Samodejno preko nadzora | # Posiljanje predloge e-poste cat << 'EOF' | mail -s "Certifikat preklican - Zahtevano ukrepanje" admin@example.com Certifikat je bil preklican: Serijska stevilka: 01:23:45:67:89:AB:CD:EF Subject: CN=server.example.com Razlog: Ogroženost ključa Datum: $(date -Iseconds) Zahtevano ukrepanje: 1. Konfiguracija storitve z novim certifikatom 2. Odstranitev starega certifikata iz vseh sistemov Vprašanja: pki-team@example.com EOF ---- ===== Korak 6: Dokumentacija ===== | Polje | Vrednost | |-------|----------| | Serijska številka | ''01:23:45:67:89:AB:CD:EF'' | | Subject | ''CN=server.example.com'' | | Razlog preklica | ''keyCompromise'' | | Datum preklica | ''2024-12-15 10:30:00 UTC'' | | Številka CRL | ''42'' | | Operater | ''Ime operaterja'' | | Zahtevek | ''SEC-2024-0815'' | ---- ===== Nujni primer: Množični preklic ===== **Ob ogroženosti CA:** → [[..:disaster-recovery:notfall-revocation|Navodilo za nujni preklic]] # Preklic vseh certifikatov CA for cert in /etc/pki/CA/newcerts/*.pem; do openssl ca -config openssl.cnf -revoke "$cert" -crl_reason cACompromise done # Nov CRL s kratko veljavnostjo openssl ca -config openssl.cnf -gencrl -crldays 1 -out emergency-crl.pem ---- ===== Kontrolni seznam ===== | # | Kontrolna točka | | |---|-----------------|---| | 1 | Certifikat vnesen v CRL | | | 2 | CRL podpisan in veljaven | | | 3 | CRL dostopen na vseh CDP | | | 4 | OCSP odgovarja ''revoked'' | | | 5 | Imetnik certifikata obveščen | | | 6 | Varnostni zahtevek dokumentiran | | ---- ===== Odpravljanje težav ===== | Težava | Vzrok | Rešitev | |--------|-------|---------| | ''already revoked'' | Dvojni preklic | Prezreti | | ''unknown serial'' | Ni od tega CA | Preveriti CA | | CRL neveljaven | Napaka podpisa | Preveriti CA ključ | | OCSP odgovarja ''good'' | Predpomnilnik/sinhronizacija | Ponovno zagnati OCSP odzivnik | ---- ===== Povezana navodila ===== * [[.:zertifikat-ausstellen|Izdaja certifikata]] – Nadomestni certifikat * [[..:disaster-recovery:notfall-revocation|Nujni preklic]] – Množični preklic * [[sl:int:pqcrypt:szenarien:kurzreferenz:validierung|Kratka referenca validacije]] – Preverjanje CRL/OCSP ---- << [[.:zertifikat-erneuern|← Obnova certifikata]] | [[.:health-check|→ Pregled zdravja]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>runbook zertifikat widerruf revocation crl ocsp operator}}