Un cliente revocado sigue conectando: la lista nunca llegó
La revocación es una entrada de la verificación del certificado, no una orden que termina una sesión. Compare cómo ven la lista una conexión nueva y un túnel en marcha.
La revocación nunca entra en un túnel en marcha para borrar una sesión. La lista es una entrada de la verificación del certificado y se consulta durante el intercambio del canal de control que inicia una sesión TLS. Ese único hecho explica las dos sorpresas: un cliente revocado vuelve a conectar porque la lista nunca llegó al verificador, y una sesión existente sobrevive porque nadie volvió a verificar nada.
Una lista es una entrada, no una acción
Durante el establecimiento de la sesión el servidor valida el certificado del cliente contra sus anclas de confianza, y la directiva de revocación añade una consulta de la lista a esa decisión. La comprobación ocurre en el servidor, así que el cliente no puede ver que su certificado fue revocado y sigue ofreciendo el mismo. Un perfil que aún conecta demuestra solo que algún verificador aceptó la cadena, no que la revocación haya fallado.
La lista es en sí misma un objeto firmado con una fecha de emisión y una fecha de próxima actualización. Una lista ajena, una firmada por otra autoridad o una cuya próxima actualización ya pasó no sustituyen a la actual, y que una lista obsoleta se rechace o se acepte en silencio depende del despliegue.
Conexión nueva frente a sesión en curso
La revocación se evalúa cuando se establece o se renegocia una sesión, no contra el canal de datos en cada paquete. Un cliente que ya está conectado tiene claves de tráfico, así que sigue dejando pasar paquetes después de que su certificado aparezca en la lista. El intervalo de renegociación predeterminado se mide en horas, y por eso una lista actualizada puede surtir efecto para los recién llegados mientras un túnel en marcha se mantiene.
| Situation | What the list does | When it applies |
|---|---|---|
| Fresh connection | Blocks the handshake | At verification, immediately |
| Renegotiation | Blocks the new exchange | At the next renegotiation interval |
| Established data channel | Nothing | Until the session ends |
La aplicación inmediata requiere una acción deliberada y no solo la lista. Reiniciar el servicio obliga a cada cliente a reconectar, mientras que terminar una sola sesión desde la interfaz de gestión deja intactas las demás. Elija una por incidente y anote cuál usó. Las dos opciones tienen un radio de impacto distinto, y esa es la decisión real.
Entregue el archivo que el verificador lee de verdad
La lista debe generarse a partir del registro de la autoridad y luego copiarse a cada máquina que verifica certificados. Generarla en el host de la CA y no instalarla nunca en el servidor es el fallo más común, y parece exactamente una función de revocación rota.
ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem
Dos detalles deciden si el archivo se lee de verdad. Una ruta relativa se resuelve respecto al directorio de configuración, así que una copia dejada en el directorio personal de un operador puede no encontrarse nunca. Y el demonio suele abandonar privilegios tras el arranque, así que la cuenta de ejecución necesita permiso de búsqueda en cada directorio padre y permiso de lectura en el archivo. Compruebe ambos con la cuenta de ejecución y no con root, o la prueba demostrará lo incorrecto.
En hosts con systemd una unidad endurecida también puede ocultar la ruta, con una vista de solo lectura o un directorio de sistema protegido. Desde dentro del servicio eso es indistinguible de un archivo ausente, así que revise las restricciones de la unidad antes de ir a buscar un error de permisos. Lea el archivo de la unidad antes de culpar al modo del archivo.
Confirme en el servidor, no en el cliente
El registro del servidor nombra qué ocurrió: abrir la lista, cargarla o fallar la verificación con el número de serie revocado. El cliente solo informa de un fallo genérico de handshake, y por eso los registros del cliente son un mal lugar para buscar una decisión de revocación.
Verifique con un intento nuevo desde el perfil revocado y luego deténgase. Una conexión correcta desde ese perfil es la señal para inspeccionar la ruta del archivo y la cuenta de ejecución, no para suponer que la lista estaba mal. Conserve ese intento correcto como prueba de aceptación, y no cuente una reconexión que no haya observado.
Qué no revoca nada
Borrar el perfil de un portátil, quitar el archivo del certificado del cliente o decirle al usuario que deje de conectar no cambia nada en el servidor. El certificado sigue siendo válido hasta que la autoridad registra la revocación y el verificador lee la lista resultante.
Por eso también vale la pena escribir la cadena: registre la revocación, genere y firme la lista, distribuya exactamente ese archivo y confirme que la cuenta del servicio puede leerlo. Cada eslabón es corto, y cualquiera que falte deja a un cliente revocado conectando alegremente. Una lista de comprobación de cuatro líneas supera a una suposición sin ninguna.