Qualcuno ha revocato un certificato nella console della CA e ora un utente non riesce a connettersi. Il primo istinto è cercare l'annullamento, e per la maggior parte delle PKI non esiste: la revoca è un fatto dichiarato su un numero di serie, e il percorso di ritorno supportato è un nuovo certificato, non un record invertito. Seguite i controlli qui sotto nell'ordine, perché quale riparazione è consentita dipende dal codice di motivo e dal fatto che la chiave sia mai stata esposta.

Identificate il certificato, non la persona

I nomi comuni si ripetono. Un utente che si è reiscritto nel trimestre scorso può avere due certificati con lo stesso CN e numeri di serie diversi, e revocarne uno lascia l'altro funzionante. Stabilite prima l'oggetto esatto:

openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40

Annotate il numero di serie, l'emittente, la data di revoca e il motivo registrato nella CRL. Poi confermate quali dispositivi presentano quel numero di serie, perché un certificato revocato può essere ancora installato su un portatile, un telefono e un router di riserva, e una sostituzione che raggiunge solo uno di essi produce un secondo incidente.

Un rapido controllo comportamentale conferma lo stato senza cambiare nulla:

openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt

Se segnala il certificato come revocato, la CRL e il client concordano; se verifica in modo pulito, il client che avete in mano non è quello revocato, e la ricerca continua.

Verificate se la CA ha usato la sospensione o la revoca permanente

La RFC 5280 definisce certificateHold come stato temporaneo e removeFromCRL come il segnale che lo rilascia. Quel ciclo di vita è reale, ma non è un pulsante di annullamento generale. Leggere il codice di motivo vi dice se l'emittente abbia mai inteso supportare il rilascio.

La trappola è supporre che un'intenzione temporanea implichi un record temporaneo. Se la voce della CA porta keyCompromise o cessationOfOperation, il certificato è revocato in modo permanente, qualunque cosa intendesse fare la persona che ha premuto il pulsante. Al contrario, una voce contrassegnata certificateHold su una CA che non implementa il rilascio della sospensione è permanente in pratica, perché nulla pubblicherà mai il rilascio.

Le CA basate su OpenSSL illustrano il limite. Il comando ca accetta valori di -crl_reason, inclusi certificateHold e removeFromCRL, ma non genera CRL delta — la documentazione di OpenSSL CA segnala questo limite per il suo output CRL. Una CRL completa che semplicemente omette il numero di serie è un modello di pubblicazione diverso da una delta che dice "questa voce è rilasciata", quindi incollare removeFromCRL in una CA VPN basata su OpenSSL non produce il rilascio definito dagli standard.

Se la chiave può essere stata esposta, sostituitela

Un certificato revocato è l'affermazione che questa chiave potrebbe non essere più affidabile. Se la revoca era corretta nella sostanza — portatile perso, chiave copiata su un disco condiviso, chiave privata incollata in un ticket — ripristinare lo stesso certificato inverte una decisione di sicurezza che funzionava come previsto.

Emettere una nuova coppia di chiavi tramite il processo di registrazione, distribuite il nuovo profilo e lasciate il vecchio numero di serie revocato per tutta la sua vita. Aggiornate tutto ciò che fissa l'identità per numero di serie o impronta, comprese liste di ammissione, inventari dei dispositivi e monitoraggio che si aspetta un certificato specifico.

L'argomento della comodità per ripristinare il vecchio è reale, ma va risposto esplicitamente e non in silenzio. "L'utente ha bisogno di accesso oggi" è una ragione per accelerare l'emissione, non per annullare la revoca di una chiave di cui non potete rendere conto.

Se è stato un errore amministrativo, sostituite sotto controllo

Quando la revoca era semplicemente errata e la chiave non è mai stata esposta, la riparazione resta una sostituzione controllata e non una modifica. Usate il processo supportato dell'emittente, mantenete intatti il numero di serie e la cronologia delle emissioni, ed evitate le due scorciatoie tentatrici: invertire il carattere di stato in index.txt da R a V, ed eliminare la riga di emissione perché un nuovo certificato possa riutilizzare il numero di serie.

Su una CA OpenSSL il database è separato da tabulazioni ed è facile leggerlo male, il che rende attraente la modifica manuale:

awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt

Leggetelo, non scrivetelo. Modificare il file cambia la CRL successiva senza alcuna traccia di audit, e qualsiasi seconda istanza di CA o backup che conservi ancora la riga originale sarà in disaccordo più avanti.

Dopo aver emesso la sostituzione, pubblicate una CRL nuova tramite il meccanismo abituale e lasciate che i client la raccolgano. Rimuovere una CRL, ridurne la durata a nulla o disattivare il controllo di revoca nel profilo del client ripara un utente indebolendo tutte le altre revoche che la CA abbia mai pubblicato.

Confermate una nuova ammissione e conservate il registro

Provate con una connessione nuova, non con la sessione già aperta. Un tunnel attivo potrebbe non rieseguire i controlli di ammissione che fa una nuova stretta di mano, e le cache CRL fanno sì che un client possa continuare a connettersi finché non si aggiorna. Disconnettetevi, riconnettetevi e confermate nel log del server quale numero di serie è stato ammesso.

Registrate ciò che è successo finché è ancora fresco: quale numero di serie è stato revocato, da chi, con quale motivo, quale sostituzione è stata emessa e quando la CRL è stata ripubblicata. Quel registro è ciò che rende possibile la revisione di revoca successiva, ed è anche la prova che l'errore è stato gestito anziché nascosto.

Per sospensioni brevi in futuro, usate un meccanismo di pausa dell'ammissione se il deployment ne dispone — un account disattivato al livello dell'identità, un'appartenenza a un gruppo rimossa, un profilo client trattenuto. Questo tiene una decisione di policy temporanea separata dalla domanda se un certificato emesso sia ancora affidabile, ed è esattamente la distinzione che si è persa la prima volta.

Articoli correlati