¿Existe algún mecanismo para auditar qué certificados firmados no se han revocado?

2

Actualmente estamos utilizando EasyRSA y OpenSSL para administrar nuestros certificados VPN de usuario para OpenVPN. El proceso que tenemos actualmente es:

  1. El usuario genera un CSR en su computadora portátil y nos lo envía para que lo firmemos
  2. Copiamos la CSR en el servidor, la firmamos y devolvemos el CRT firmado al usuario
  3. Por lo general, dejamos una copia de la CSR y CRT en el servidor
  4. Cuando se revoca el certificado de un usuario, almacenamos esta información en una CRL

Tengo la tarea de auditar quién tiene acceso a la VPN. Por lo que puedo decir, la única forma en que podemos verificar quién tiene acceso es haciendo una lista de todos los CRT en el servidor y restando los CRT revocados como se indica en la CRL. Sin embargo, esto me parece que no tiene ningún sonido, como si alguien eliminara un CRT y una CSR del servidor, no tendríamos forma de saber si alguna vez se firmó.

¿Es confiable el método actual? Si no es así, ¿hay alguna manera de saber exactamente qué certificados firmados siguen siendo válidos?

    
pregunta zymhan 17.07.2014 - 16:02
fuente

2 respuestas

4

Los certificados son para autenticación , no para authorization.

Autenticación trata (aquí) del servidor OpenVPN y se asegura de que el supuesto cliente sea quien dice ser. Este es el punto de los certificados: el cliente muestra su certificado, que contiene su clave pública e identidad; el servidor valida el certificado (con respecto a su CA de confianza) para asegurarse de que el contenido del certificado sea genuino; el cliente demuestra el dominio de la clave privada correspondiente (normalmente al generar una firma basada en un desafío del servidor, esto se hace dentro de los detalles del protocolo de comunicación). De esa manera, el servidor aprende que quien esté en el otro extremo de la línea es realmente el propietario de la clave pública que está en el certificado del cliente; y el certificado, al ser verificado como genuino, permite al servidor deducir que la identidad en el certificado es realmente la del propietario de la clave.

Autorización se produce como un segundo paso. Ahora que el servidor sabe quién está llamando, aún debe decidir si a ese cliente se le otorgará acceso o no. Esta es una decisión del lado del servidor.

De su descripción, usted (aparentemente) configuró OpenVPN para usar certificados para autorización; o, dicho de otro modo, usted aplica una "autorización automática" que otorga acceso a cualquier persona que pueda autenticarse. Esta es la raíz de tu problema; Los certificados no son buenos para la autorización. Como notó, si usa una regla de autorización de este tipo, los "usuarios permitidos" no se pueden incluir de manera confiable, a menos que tenga conocimiento de todos los certificados emitidos. Además, si desea cerrar el acceso para un usuario, normalmente necesita cerrarlo ahora , no dentro de una semana ; pero la revocación es asíncrona y será realmente efectiva solo cuando la CRL anterior haya caducado.

Si bien una buena CA debe debe tener un conocimiento preciso de todos los certificados que ha emitido (aunque solo sea para poder revocar un certificado a voluntad), no hay ningún mecanismo en X.509 para garantizar la consistencia e integridad de dicha lista. Además, la naturaleza asíncrona de la revocación es una prueba más de que los certificados proporcionan medios de autorización inadecuados.

Lo que realmente necesita es mantener una lista exhaustiva de "usuarios permitidos" en el lado del servidor (en los archivos de configuración de OpenVPN). Los usuarios se identificarían por su nombre (aparentemente, OpenVPN usa la parte de 'Nombre común' del sujetoDN en los certificados para hacer referencia a los usuarios); el servidor extraerá la identidad del cliente de los certificados de cliente entrantes y autorizará al usuario solo si aparece en la lista de usuarios permitidos. Si implementa dicha autorización explícita, entonces tiene una lista confiable de usuarios permitidos ya que, por definición, es la lista que el servidor OpenVPN usa para otorgar o denegar el acceso. Además, le permite bloquear y desbloquear el acceso de cualquier usuario específico al instante .

    
respondido por el Thomas Pornin 18.07.2014 - 15:52
fuente
0

Autoridad de certificación (host)

En breve, además de excelente respuesta de Thomas Pornin

Tu segundo paso parece incorrecto:

Tienes que crear un host separado con una cuenta dedicada, (es probable que no sea root y utilices mecanismos sólidos para asegurarte de que el usuario root no tenga acceso a datos de secretos como la clave privada de ca .) y no está conectado a Internet! Luego, ¡preste atención a los intercambios de datos con este host!

El mecanismo de firma de CSR debe usarse desde y hacia esta autoridad de certificación .

También se preocupa por las copias de seguridad: ¡manténgalas cifradas y seguras!

    
respondido por el F. Hauri 10.12.2015 - 15:20
fuente