====== 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}}