Il file del certificato del tuo client è sparito, e il riflesso è revocare il nome ed emetterne uno nuovo. Quel riflesso lascia valido il certificato originale, perché la revoca si basa su un numero di serie e non su un’etichetta. La CA quasi certamente conserva ancora una copia di ciò che ha emesso, e trovare quella copia è l’intero compito.

Perdere un file non è perdere il record della CA

Una PKI Easy-RSA conserva i certificati pubblici che ha emesso, e le versioni attuali archiviano anche copie per serie nella directory certs_by_serial della PKI. La chiave privata non serve per revocare nulla. L’importante è il certificato esatto firmato dalla CA, che la CA possiede già.

Lavora su una copia di backup della PKI corretta, con l’amministratore che la possiede. La revoca è un’operazione verificabile, non una riparazione eseguita su un database di produzione a mezzanotte.

Anche una copia del certificato pubblico incorporato del client va bene, se il deployment ne ha conservata una.

Leggi prima l’emittente e la serie

Esamina il PEM recuperato e annota l’emittente, il numero di serie, il soggetto e la finestra di validità. Il numero di serie è unico nell’ambito di un emittente, non tra tutte le CA del tuo ambiente, quindi l’emittente fa parte dell’identità. Se più certificati condividono un soggetto, sono proprio quelle serie a distinguerli.

Confronta i valori con i registri della CA e con il dispositivo o la persona che ritieni detenga il certificato.

Un nome comune può essere riutilizzato, e di solito lo è. Non decidere quali certificati ritirare finché le serie non sono annotate.

Perché revocare il nuovo certificato non fa nulla

Emettere un sostituto con lo stesso nome comune crea un secondo certificato con una serie diversa. Revocare il sostituto ritira il nuovo e lascia valido l’originale fino alla scadenza. Dal punto di vista della CA sono due oggetti indipendenti, e una CRL elenca serie e non nomi. L’indice della CA tiene una riga per ogni certificato emesso proprio per questo motivo.

La stessa confusione produce l’errore inverso: cancellare il file del client e supporre che la CA lo abbia dimenticato. La cancellazione sul client non è un evento di revoca, e il certificato continua a funzionare per chiunque ne abbia una copia.

Entrambi gli errori derivano dal trattare il nome come l’identità.

Revoca il certificato che la serie indica

Identifica l’oggetto prima di toccare la CA: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates stampa i quattro valori in un solo passaggio, e la serie è ciò che confronti con l’archivio della CA. Easy-RSA conserva quell’archivio sotto pki/certs_by_serial, con un file per ogni serie. Il comando di revoca accetta un nome comune e non una serie, quindi copia il file archiviato in pki/issued/<common-name>.crt e lascia che il nome punti all’oggetto identificato. Esegui easyrsa revoke <common-name> dalla directory della PKI, poi controlla che la riga corrispondente in index.txt sia passata a R. La serie è il modo in cui scegli l’oggetto, non un argomento che il comando accetta.

openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates
cp pki/certs_by_serial/A1B2C3D4.pem pki/issued/client-01.crt
./easyrsa revoke client-01
grep -n client-01 pki/index.txt
./easyrsa gen-crl

Se index.txt non mostra R, fermati e leggi l’errore prima di generare una CRL, perché una CRL costruita da un record ancora valido non ritira nulla. Solo dopo il cambio della riga esegui easyrsa gen-crl e passi alla distribuzione del file.

Pubblica la CRL dove viene realmente applicata

Genera una nuova CRL tramite il flusso di lavoro supportato dalla PKI, poi pubblicala su ogni verificatore che applica le revoche di questo emittente.

Un file aggiornato che resta sulla CA non cambia nulla, perché la VPN chiude la decisione sul proprio verificatore. Controlla l’emittente della CRL, il periodo di validità e le serie revocate, e conferma che il servizio ricarichi il file invece di mettere in cache il precedente. Proprietà e percorso contano quanto il contenuto: una CRL che il demone non può leggere è indistinguibile dall’assenza di CRL. L’opzione crl-verify di OpenVPN indica il file che il demone legge, quindi controlla quel percorso e la proprietà del file nella configurazione del server.

Verifica con un tentativo di connessione reale, non con la marca temporale del file.

Sapere quando una CRL è lo strumento sbagliato

Se la chiave privata dell’emittente non è più attendibile, ritirare serie note non impedisce a un detentore non autorizzato di firmare nuovi certificati. È una transizione di fiducia dell’emittente, cioè una nuova CA e un piano di distribuzione, non un’altra voce nella CRL. Che un ex amministratore abbia avuto accesso non è di per sé prova di abuso della chiave, quindi raccogli i fatti prima di ricostruire la fiducia.

Modificare a mano il database delle emissioni per invertire una lettera di stato non sostituisce una revoca firmata, e lascia la CRL incoerente con i registri.

Tieni la serie, la CRL e il passo di distribuzione in un’unica nota, e il prossimo audit diventa un esercizio di lettura. Il progetto Easy-RSA documenta i comandi supportati per la versione installata, e questa è l’unica interfaccia che vale la pena seguire.

Articoli correlati