Alguén revocou un certificado na consola da CA e agora un usuario non pode conectarse. O primeiro instinto é buscar o desfacer, e para a maioría das PKI non existe: a revocación é un feito declarado sobre un número de serie, e o camiño de volta admitido é un certificado novo, non un rexistro invertido. Percorre as comprobacións seguintes en orde, porque que reparación se che permite usar depende do código de motivo e de se a clave chegou a exporse.

Identifica o certificado, non a persoa

Os nomes comúns repítense. Un usuario que se volveu inscribir o trimestre pasado pode ter dous certificados co mesmo CN e números de serie distintos, e revogar un deixa o outro funcionando. Establece primeiro o obxecto exacto:

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

Anota o número de serie, o emisor, a data de revocación e o motivo rexistrado na CRL. Despois confirma que dispositivos presentan ese número de serie, porque un certificado revogado pode seguir instalado nun portátil, un teléfono e un router de reposto, e unha substitución que só chega a un deles xera un segundo incidente.

Unha comprobación rápida de comportamento confirma o estado sen cambiar nada:

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

Se informa que o certificado está revogado, a CRL e o cliente coinciden; se verifica limpiamente, o cliente que tes non é o revogado, e a busca continúa.

Comproba se a CA usou retención ou revocación permanente

A RFC 5280 define certificateHold como un estado temporal e removeFromCRL como o sinal que o libera. Ese ciclo de vida é real, pero non é un botón de desfacer xeral. Ler o código de motivo diche se o emisor pretendeu algunha vez admitir a liberación.

A trampa é supor que unha intención temporal implica un rexistro temporal. Se a entrada da CA leva keyCompromise ou cessationOfOperation, o certificado está revogado de forma permanente, faga o que faga a persoa que premeu o botón. Á inversa, unha entrada marcada certificateHold nunha CA que non implementa a liberación de retención é permanente na práctica, porque nada publicará nunca a liberación.

As CA baseadas en OpenSSL ilustran o límite. A orde ca acepta valores de -crl_reason, incluídos certificateHold e removeFromCRL, pero non xera CRL delta — a documentación de OpenSSL CA sinala esa limitación para a súa saída de CRL. Unha CRL completa que simplemente omite o número de serie é un modelo de publicación distinto dunha delta que di "esta entrada está liberada", así que pegar removeFromCRL nunha CA VPN baseada en OpenSSL non produce a liberación definida polas normas.

Se a clave pode ter quedado exposta, substitúea

Un certificado revogado é unha declaración de que esta clave xa non pode ser confiable. Se a revocación era correcta en esencia — portátil perdido, clave copiada a un disco compartido, clave privada pegada nun ticket — restaurar o mesmo certificado inverte unha decisión de seguridade que funcionaba como debía.

Emite un par de claves novo mediante o proceso de inscrición, distribúe o perfil novo e deixa o número de serie antigo revogado durante toda a súa vida. Actualiza todo o que fixa a identidade por número de serie ou pegada, incluídas listas de admisión, inventarios de dispositivos e monitorización que espera un certificado concreto.

O argumento de comodidade para restaurar o antigo é real, pero debe responderse explicitamente e non en voz baixa. "O usuario necesita acceso hoxe" é unha razón para acelerar a emisión, non para desrevocar unha clave da que non podes dar conta.

Se foi un erro administrativo, substitúe baixo control

Cando a revocación era simplemente errónea e a clave nunca se expuxo, a reparación segue sendo unha substitución controlada e non unha edición. Usa o proceso admitido do emisor, mantén o número de serie e o historial de emisión intactos, e evita os dous atallos tentadores: xirar o carácter de estado en index.txt de R a V, e borrar a fila de emisión para que un certificado novo poida reutilizar o número de serie.

Nunha CA OpenSSL a base de datos está separada por tabuladores e é fácil de ler mal, o que fai atractiva a edición manual:

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

Léa, non a escribas. Editar o ficheiro cambia a seguinte CRL sen ningún rastro de auditoría, e calquera segunda instancia de CA ou copia de seguridade que aínda conserve a fila orixinal discrepará dela máis adiante.

Despois de emitir a substitución, publica unha CRL nova mediante o mecanismo habitual e deixa que os clientes a recollan. Quitar unha CRL, acurtar a súa vida ata nada ou desactivar a comprobación de revocación no perfil do cliente arranxa un usuario debilitando todas as demais revocacións que a CA publicase nunca.

Confirma unha admisión nova e conserva o rexistro

Proba cunha conexión nova, non coa sesión que xa estaba aberta. Un túnel activo pode non volver executar as comprobacións de admisión que fai un handshake novo, e as cachés de CRL fan que un cliente poida seguir conectándose ata que se refresque. Desconecta, volve conectar e confirma no rexistro do servidor que número de serie foi admitido.

Rexistra o que ocorreu mentres aínda está fresco: que número de serie se revogou, por quen, con que motivo, que substitución se emitiu e cando se republicou a CRL. Ese rexistro é o que fai posible a seguinte revisión de revocación, e tamén é a proba de que o erro se xestionou en lugar de ocultarse.

Para suspensións breves no futuro, usa un mecanismo de pausa de admisión se o despregamento ten un — unha conta desactivada na capa de identidade, unha pertenza a grupo eliminada, un perfil de cliente retido. Iso mantén unha decisión de política temporal separada da cuestión de se un certificado emitido segue sendo fiable, e é exactamente a distinción que se perdeu a primeira vez.

Artigos relacionados