Durata: ~5 minuti
Ruolo: Operatore PKI / Security
Priorità: ALTA in caso di compromissione
| Codice | Motivo | Quando usare |
| —— | ——- | —————- |
| 0 | unspecified | Standard (non consigliato) |
| 1 | keyCompromise | Chiave privata compromessa |
| 2 | cACompromise | CA compromessa |
| 3 | affiliationChanged | Cambio organizzazione |
| 4 | superseded | Sostituito da nuovo certificato |
| 5 | cessationOfOperation | Servizio dismesso |
| 9 | privilegeWithdrawn | Autorizzazione revocata |
# Cercare per numero di serie openssl x509 -in certificate.pem -serial -subject -noout # Cercare nel database CA grep -r "CN=server.example.com" /etc/pki/CA/index.txt
# PowerShell: Trovare certificato Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*server.example.com*" } | Select-Object SerialNumber, Subject, Thumbprint
# Revocare certificato openssl ca -config openssl.cnf \ -revoke /path/to/certificate.pem \ -crl_reason keyCompromise # Alternativa: Per numero di serie openssl ca -config openssl.cnf \ -revoke_by_serial 01234567890ABCDEF \ -crl_reason keyCompromise
// Revocare certificato e creare CRL var crlBuilder = new CertificateRevocationListBuilder(); // Aggiungere revoca crlBuilder.AddEntry( revokedCert.SerialNumber, DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise); // Firmare CRL (modalità ibrida) 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);
# Generare nuova CRL openssl ca -config openssl.cnf -gencrl -out crl.pem # Convertire CRL in formato DER (per distribuzione) openssl crl -in crl.pem -outform DER -out crl.der # Verificare CRL openssl crl -in crl.pem -text -noout
Distribution Points:
| Metodo | Destinazione | Comando |
| ——— | —— | ——– |
| HTTP | Web-Server | cp crl.der /var/www/pki/crl.der |
| LDAP | Active Directory | ldapmodify -f update-crl.ldif |
| CDP | Nel certificato | Automatico via URL |
# Copiare CRL su Web-Server scp crl.der webserver:/var/www/html/pki/crl.der # Nginx/Apache Reload (se cache) ssh webserver "systemctl reload nginx"
# Aggiornare indice OCSP Responder (automatico con OpenSSL CA) # Il responder legge /etc/pki/CA/index.txt # Testare risposta OCSP openssl ocsp \ -issuer intermediate.pem \ -cert certificate.pem \ -url http://ocsp.example.com \ -resp_text
Risposta attesa dopo la revoca:
Cert Status: revoked Revocation Time: Dec 15 10:30:00 2024 GMT Revocation Reason: keyCompromise
Notifiche obbligatorie:
| Destinatario | Metodo | Contenuto |
| ———– | ——— | ——– |
| Titolare certificato | Numero di serie, motivo, prossimi passi | |
| Security Team | Ticket | Dettagli incidente |
| Sistemi interessati | Alert | Automatico via monitoring |
# Inviare template e-mail cat << 'EOF' | mail -s "Certificato revocato - Azione richiesta" admin@example.com Il certificato è stato revocato: Numero di serie: 01:23:45:67:89:AB:CD:EF Subject: CN=server.example.com Motivo: Key Compromise Data: $(date -Iseconds) Azione richiesta: 1. Configurare il servizio con nuovo certificato 2. Rimuovere il vecchio certificato da tutti i sistemi Per domande: pki-team@example.com EOF
| Campo | Valore |
| —— | —— |
| Numero di serie | 01:23:45:67:89:AB:CD:EF |
| Subject | CN=server.example.com |
| Motivo revoca | keyCompromise |
| Data revoca | 2024-12-15 10:30:00 UTC |
| Numero CRL | 42 |
| Operatore | Nome-Operatore |
| Ticket | SEC-2024-0815 |
In caso di compromissione CA: → Runbook Revoca d'emergenza
# Revocare tutti i certificati di una CA for cert in /etc/pki/CA/newcerts/*.pem; do openssl ca -config openssl.cnf -revoke "$cert" -crl_reason cACompromise done # Nuova CRL con validità breve openssl ca -config openssl.cnf -gencrl -crldays 1 -out emergency-crl.pem
| # | Punto di verifica | |
| — | ———– | — |
| 1 | Certificato inserito nella CRL | |
| 2 | CRL firmata e valida | |
| 3 | CRL disponibile su tutti i CDP | |
| 4 | OCSP risponde revoked | |
| 5 | Titolare certificato notificato | |
| 6 | Ticket security documentato |
| Problema | Causa | Soluzione |
| ——— | ——— | ——– |
already revoked | Doppia revoca | Ignorare |
unknown serial | Non da questa CA | Verificare CA |
| CRL non valida | Errore firma | Verificare chiave CA |
OCSP risponde good | Cache/Sync | Riavviare OCSP Responder |
« Rinnovo certificato | Health Check »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional