Mandadory verifica que un cliente debe hacer para verificar un certificado ssl / tls [duplicado]

1

Digamos que tengo un cliente, no un navegador, que quiere conectarse con https a un servidor. Podría ser un programa de Python, una aplicación de Android o una biblioteca, etc. Supongamos que el cliente tiene una lista de CA confiables y sus claves públicas.

¿Qué comprobaciones debe realizar el cliente para verificar que el certificado es válido y evitar ataques de intermediarios y qué ataques son posibles si el cliente no realiza estas comprobaciones?

Sé que muchas bibliotecas hacen esto por ti, pero muchas cosas pueden salir incorrecto . La pregunta es principalmente teórica.

Por lo que he entendido, debes verificar:

  1. Si el emisor (CA) del certificado está en su lista de confianza y la clave pública del emisor es la correcta.
  2. Marque CN para que coincida con el dominio / IP que está conectando
  3. Si el certificado ha caducado
  4. Algo sobre la extensión X509v3 y restricciones básicas que no he entendido correctamente.
pregunta Laxmana 15.04.2016 - 11:54
fuente

2 respuestas

1

La validación correcta de un certificado es un asunto realmente complejo. Como con muchas cosas en criptografía, es mejor dejar esta validación en una biblioteca en lugar de intentar implementarla usted mismo. Por lo general, le pediría a su biblioteca que realice todo el trabajo arduo y luego verifique las propiedades adicionales que le interesen más adelante.

En cuanto a los detalles:

Primero, debe verificar el certificado de la entidad final. Debe ver si cumple con sus expectativas: ¿coincide el sujeto con lo que espera (en el caso de un sitio web, eso significa que verificar el nombre común del sujeto es el nombre FQDN de la URL que usó para acceder a él)? , ¿es correcto el periodo de validez del certificado? ¿El certificado tiene el ? ¿Son las restricciones básicas del certificado satisfecho?

Luego puede verificar si el certificado ha sido revocado (verifique el punto de distribución de CRL en la propiedad del certificado y consultarlos para verificar la revocación).

Después de esto, se debe verificar la ruta completa del certificado. Esto significa realizar más o menos las validaciones de evitación para cada certificado en la ruta hasta el ancla de confianza. (Consulte rfc5280 si desea obtener información detallada).

    
respondido por el Stephane 15.04.2016 - 13:16
fuente
1

Y debe realizar muchas comprobaciones sobre la autenticidad del certificado, es decir, para evitar MitM o certificados falsos emitidos por la clave de CA "llamada robada". Eche un vistazo y comience en el Proyecto de Perspectivas para tener una imagen completa

    
respondido por el Alexey Vesnin 15.04.2016 - 12:10
fuente

Lea otras preguntas en las etiquetas