Algú ha revocat un certificat a la consola de la CA i ara un usuari no es pot connectar. El primer instint és buscar la desfeta, i per a la majoria de PKI no n'hi ha: la revocació és un fet declarat sobre un número de sèrie, i el camí de tornada suportat és un certificat nou, no un registre invertit. Feu les comprovacions següents en ordre, perquè quina reparació us està permesa depèn del codi de motiu i de si la clau mai es va exposar.

Identifiqueu el certificat, no la persona

Els noms comuns es repeteixen. Un usuari que es va tornar a inscriure el trimestre passat pot tenir dos certificats amb el mateix CN i números de sèrie diferents, i revocar-ne un deixa l'altre funcionant. Establiu primer l'objecte exacte:

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

Anoteu el número de sèrie, l'emissor, la data de revocació i el motiu registrat a la CRL. Després confirmeu quins dispositius presenten aquest número de sèrie, perquè un certificat revocat pot seguir instal·lat en un portàtil, un telèfon i un encaminador de recanvi, i un reemplaçament que només n'arriba a un produeix un segon incident.

Una comprovació ràpida de comportament confirma l'estat sense canviar res:

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

Si informa que el certificat està revocat, la CRL i el client hi estan d'acord; si es verifica net, el client que teniu no és el revocat, i la cerca continua.

Comproveu si la CA va fer servir retenció o revocació permanent

La RFC 5280 defineix certificateHold com un estat temporal i removeFromCRL com el senyal que l'allibera. Aquest cicle de vida és real, però no és un botó de desfeta general. Llegir el codi de motiu us diu si l'emissor va pretendre mai donar suport a l'alliberament.

El parany és assumir que una intenció temporal implica un registre temporal. Si l'entrada de la CA porta keyCompromise o cessationOfOperation, el certificat està revocat permanentment, faci el que faci la persona que va clicar el botó. A la inversa, una entrada marcada certificateHold en una CA que no implementa l'alliberament de retenció és permanent a la pràctica, perquè res no publicarà mai l'alliberament.

Les CA basades en OpenSSL il·lustren el límit. L'ordre ca accepta valors de -crl_reason, com ara certificateHold i removeFromCRL, però no genera CRL delta — la documentació d'OpenSSL CA assenyala aquesta limitació per a la seva sortida de CRL. Una CRL completa que simplement omet el número de sèrie és un model de publicació diferent d'una delta que diu "aquesta entrada està alliberada", així que enganxar removeFromCRL en una CA VPN basada en OpenSSL no produeix l'alliberament definit per les normes.

Si la clau pot haver quedat exposada, substituïu-la

Un certificat revocat és una declaració que aquesta clau ja no es pot confiar. Si la revocació era correcta en essència — portàtil perdut, clau copiada a un disc compartit, clau privada enganxada en un tiquet — restaurar el mateix certificat reverteix una decisió de seguretat que funcionava com calia.

Emeteu un parell de claus nou pel procés d'inscripció, distribuïu el perfil nou i deixeu el número de sèrie antic revocat durant tota la seva vida. Actualitzeu tot el que fixa la identitat pel número de sèrie o l'empremta, incloent-hi llistes d'admissió, inventaris de dispositius i monitoratge que espera un certificat concret.

L'argument de comoditat per restaurar el vell és real, però s'ha de respondre explícitament i no en veu baixa. "L'usuari necessita accés avui" és una raó per accelerar l'emissió, no per desrevocar una clau de la qual no podeu donar compte.

Si va ser un error administratiu, substituïu-ho sota control

Quan la revocació era simplement errònia i la clau mai es va exposar, la reparació continua sent una substitució controlada i no una edició. Feu servir el procés suportat de l'emissor, manteniu el número de sèrie i l'historial d'emissió intactes, i eviteu les dues dreceres temptadores: girar el caràcter d'estat a index.txt de R a V, i esborrar la fila d'emissió perquè un certificat nou pugui reutilitzar el número de sèrie.

En una CA OpenSSL la base de dades està separada per tabuladors i és fàcil de llegir malament, cosa que fa atractiva l'edició manual:

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

Llegiu-la, no l'escriviu. Editar el fitxer canvia la CRL següent sense cap rastre d'auditoria, i qualsevol segona instància de CA o còpia de seguretat que encara tingui la fila original hi discreparà més endavant.

Després d'emetre el reemplaçament, publiqueu una CRL nova pel mecanisme habitual i deixeu que els clients la recullin. Treure una CRL, escurçar-ne la vida fins a res o desactivar la comprovació de revocació al perfil del client arregla un usuari tot debilitant totes les altres revocacions que la CA ha publicat mai.

Confirmeu una admissió nova i conserveu el registre

Proveu amb una connexió nova, no amb la sessió que ja estava oberta. Un túnel viu pot no tornar a executar les comprovacions d'admissió que fa un intercanvi de salutació nou, i les memòries cau de CRL fan que un client pugui seguir connectant-se fins que es refresqui. Desconnecteu, torneu a connectar i confirmeu al registre del servidor quin número de sèrie ha estat admès.

Registreu què va passar mentre encara és fresc: quin número de sèrie es va revocar, per qui, amb quin motiu, quin reemplaçament es va emetre i quan es va republicar la CRL. Aquest registre és el que fa possible la revisió de revocació següent, i també és l'evidència que l'error es va gestionar en lloc d'amagar-se.

Per a suspensions curtes en el futur, feu servir un mecanisme de pausa d'admissió si el desplegament en té — un compte desactivat a la capa d'identitat, una pertinença a grup eliminada, un perfil de client retingut. Això manté una decisió de política temporal separada de la qüestió de si un certificat emès encara és fiable, i és exactament la distinció que es va perdre el primer cop.

Articles relacionats