Ați revocat certificatul VPN greșit? Opțiuni de recuperare și limite
Identificați emitentul, numărul de serie și codul motivului înainte de a atinge CA. Revocarea permanentă, suspendarea certificatului și o pauză de admitere sunt trei reparații.
Cineva a revocat un certificat în consola CA și acum un utilizator nu se mai poate conecta. Primul instinct este să caute anularea, iar pentru majoritatea PKI-urilor aceasta nu există: revocarea este un fapt declarat despre un număr de serie, iar calea de întoarcere acceptată este un certificat nou, nu o înregistrare inversată. Parcurgeți verificările de mai jos în ordine, deoarece ce reparație este permisă depinde de codul motivului și de dacă cheia a fost vreodată expusă.
Identificați certificatul, nu persoana
Numele comune se repetă. Un utilizator care s-a reînscris trimestrul trecut poate avea două certificate cu același CN și numere de serie diferite, iar revocarea unuia lasă celălalt funcțional. Stabiliți mai întâi obiectul exact:
openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40
Notați numărul de serie, emitentul, data revocării și motivul înregistrat în CRL. Apoi confirmați ce dispozitive prezintă acel număr de serie, deoarece un certificat revocat poate fi încă instalat pe un laptop, un telefon și un router de rezervă, iar o înlocuire care ajunge doar la unul dintre ele produce un al doilea incident.
O verificare rapidă de comportament confirmă starea fără a schimba nimic:
openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt
Dacă raportează certificatul ca revocat, CRL-ul și clientul sunt de acord; dacă verifică curat, clientul pe care îl țineți nu este cel revocat, iar căutarea continuă.
Verificați dacă CA a folosit suspendare sau revocare permanentă
RFC 5280 definește certificateHold ca stare temporară și removeFromCRL ca semnalul care o eliberează. Acel ciclu de viață este real, dar nu este un buton general de anulare. Citirea codului motivului vă spune dacă emitentul a intenționat vreodată să sprijine eliberarea.
Capcana este să presupuneți că o intenție temporară înseamnă o înregistrare temporară. Dacă intrarea din CA poartă keyCompromise sau cessationOfOperation, certificatul este revocat permanent, indiferent de ce a intenționat persoana care a apăsat butonul. Invers, o intrare marcată certificateHold pe o CA care nu implementează eliberarea suspendării este permanentă în practică, pentru că nimic nu va publica vreodată eliberarea.
CA-urile bazate pe OpenSSL ilustrează limita. Comanda ca acceptă valori -crl_reason, inclusiv certificateHold și removeFromCRL, dar nu generează CRL-uri delta — documentația OpenSSL CA menționează această limitare pentru ieșirea sa CRL. Un CRL complet care pur și simplu omite numărul de serie este un model de publicare diferit de o deltă care spune "această intrare este eliberată", așa că lipirea removeFromCRL într-o CA VPN bazată pe OpenSSL nu produce eliberarea definită de standarde.
Dacă cheia poate fi fost expusă, înlocuiți-o
Un certificat revocat este declarația că acestei chei nu i se mai poate acorda încredere. Dacă revocarea a fost corectă în substanță — laptop pierdut, cheie copiată pe un disc partajat, cheie privată lipită într-un tichet — restaurarea aceluiași certificat inversează o decizie de securitate care funcționa cum trebuie.
Emiteți o pereche nouă de chei prin procesul de înregistrare, distribuiți noul profil și lăsați vechiul număr de serie revocat pentru toată durata lui de viață. Actualizați tot ce fixează identitatea după numărul de serie sau amprentă, inclusiv listele de admitere, inventarele de dispozitive și monitorizarea care așteaptă un anumit certificat.
Argumentul confortului de a-l restaura pe cel vechi este real, dar trebuie să primească un răspuns explicit, nu tăcut. "Utilizatorul are nevoie de acces astăzi" este un motiv să accelerați emiterea, nu un motiv să anulați revocarea unei chei pentru care nu puteți da socoteală.
Dacă a fost o eroare administrativă, înlocuiți sub control
Când revocarea a fost pur și simplu greșită și cheia nu a fost niciodată expusă, reparația rămâne o înlocuire controlată și nu o editare. Folosiți procesul acceptat al emitentului, păstrați numărul de serie și istoricul emiterii intacte și evitați cele două scurtături tentante: întoarcerea caracterului de stare din index.txt de la R înapoi la V, și ștergerea rândului de emitere pentru ca un certificat nou să poată reutiliza numărul de serie.
Pe o CA OpenSSL baza de date este separată prin tabulatoare și ușor de citit greșit, ceea ce face editarea manuală tentantă:
awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt
Citiți-o, nu o scrieți. Editarea fișierului schimbă următorul CRL fără nicio urmă de audit, iar orice a doua instanță CA sau copie de siguranță care mai păstrează rândul original va fi în dezacord cu ea mai târziu.
După ce ați emis înlocuirea, publicați un CRL nou prin mecanismul obișnuit și lăsați clienții să îl preia. Eliminarea unui CRL, scurtarea duratei lui de viață la nimic sau dezactivarea verificării revocării în profilul clientului repară un utilizator slăbind fiecare altă revocare pe care CA a publicat-o vreodată.
Confirmați o admitere nouă și păstrați înregistrarea
Testați cu o conexiune nouă, nu cu sesiunea care era deja deschisă. Un tunel activ poate să nu ruleze din nou verificările de admitere pe care le face un handshake nou, iar cache-urile CRL fac ca un client să poată continua să se conecteze până se reîmprospătează. Deconectați-vă, reconectați-vă și confirmați în jurnalul serverului ce număr de serie a fost admis.
Înregistrați ce s-a întâmplat cât timp este încă proaspăt: ce număr de serie a fost revocat, de către cine, cu ce motiv, ce înlocuire a fost emisă și când a fost republicat CRL-ul. Acea înregistrare este ce face posibilă următoarea revizuire a revocării și este și dovada că eroarea a fost gestionată, nu ascunsă.
Pentru suspendări scurte în viitor, folosiți un mecanism de pauză a admiterii dacă implementarea are unul — un cont dezactivat în stratul de identitate, o apartenență la grup eliminată, un profil de client reținut. Asta ține o decizie de politică temporară separată de întrebarea dacă un certificat emis mai este de încredere, și exact această distincție s-a pierdut prima dată.