Inhaltsverzeichnis

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: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


« ← Obnova certifikata | → Pregled zdravja »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional