¿Mejores prácticas para el diseño de cadenas de certificados TLS de autenticación mutua?

4

Estoy buscando consejos sobre las mejores prácticas para construir un sistema de autenticación mutua utilizando certificados. Me gustaría crear un sistema con múltiples dispositivos de IoT que reporten datos a un servidor web, en el que tanto el servidor como el cliente necesitan autenticarse entre sí. Estaba pensando en utilizar una autoridad de certificado raíz (una personal) y una autoridad de certificación intermedia para el certificado del servidor y otra para los certificados de cliente.

La CA raíz firma CAs intermedias (x2), una firma certificados de servidor, otra firma certificados de cliente.

En el futuro, la CA raíz puede firmar otra CA intermedia.

¿Esto tiene sentido? ¿O es mejor implementar CA raíz independientes para el servidor y los clientes?

Ya que voy a usar certificados autofirmados, para que un lado verifique el otro, ¿tengo que proporcionar un certificado raíz a todos? o certificado intermedio? ¿Qué pasa si uno de los dispositivos se ve comprometido? (¿Revocando?)

Lo siento por las múltiples preguntas, pero las preguntas de seguimiento están relacionadas con la pregunta principal. ¿Cómo debe diseñarse la cadena de certificados? ¿Qué enfoques son más seguros?

    
pregunta Genom 27.08.2018 - 23:02
fuente

2 respuestas

1

Implementaría una jerarquía simple de 2 niveles con una única raíz y una única entidad emisora de certificados que emitirá certificados tanto para los clientes como para los servidores. A menos que no haya requisitos específicos, no es necesario implementar múltiples raíces o incluso CA intermedias. Solo mantén 2 niveles simples.

  

¿Tengo que proporcionar certificado raíz a todos?

si. Los clientes tendrán que confiar en su raíz para autenticar el servidor. El servidor tendrá que confiar en su raíz para autenticar clientes.

  

¿Qué sucede si uno de los dispositivos se ve comprometido? (¿Revocando?)

si. Sin embargo, la revocación puede tener gran latencia. Por lo tanto, puede ser razonable tener una base de datos local para registrar a todos los clientes y su información básica. Si el dispositivo se ve comprometido, actualice la base de datos (deshabilite la cuenta del dispositivo) para evitar temporalmente que el dispositivo se conecte al servidor hasta que se resuelva el problema.

    
respondido por el Crypt32 27.08.2018 - 23:27
fuente
2

No sé si existe un conjunto único de "mejores prácticas" para realizar la autenticación del cliente, ya que depende mucho de los detalles de su entorno. Probablemente pueda encontrar las mejores prácticas para configurar una CA para la autenticación de clientes VPN, si está lo suficientemente cerca.

Le puedo dar una lista de preguntas en las que debería pensar en el contexto de su aplicación. Al resolver estos problemas, la pregunta sobre la jerarquía de CA puede resolverse por usted.

  • ¿Hay algo que diferencie a un cliente de un servidor? Sería malo si alguien pudiera configurar un servidor falso utilizando un certificado de cliente y lograr que otros clientes se conecten a él. Hay varias formas de resolver esto: podría usar diferentes CA raíz para clientes y servidores, aunque puede ser más sencillo poner un "Soy un cliente" y "Soy un servidor" Uso de clave extendida en el certificado. Tenga en cuenta que los métodos más inteligentes requerirán que escriba un código de validación de certificado personalizado en los componentes del cliente y / o servidor.

  • ¿Cómo funciona la revocación? Si un cliente / servidor necesita revocar su certificado, ¿con quién se comunica? ¿Cómo sabrán los servidores / clientes que ha sido revocado? ¿Qué tan rápido sabrán los servidores / clientes que ha sido revocado?

  • ¿Cómo está actualizando los certificados de cliente cuando caducan? (No extraiga un Tesla , llene hilo de twitter aquí )

  • ¿Cómo está asegurando las claves privadas de las CA? ¿Están siendo almacenados en algún tipo de token de hardware? ¿Qué pasa si las máquinas que alojan las CA caen? (ya sea temporalmente, bloqueando la publicación de la información de revocación, o permanentemente, perdiendo las claves privadas de la AC)

Básicamente, creo que la forma en que configura la jerarquía de CA termina siendo un efecto secundario de cómo aborda las otras consideraciones de seguridad;)

    
respondido por el Mike Ounsworth 28.08.2018 - 00:00
fuente

Lea otras preguntas en las etiquetas