Cómo identificar de manera confiable un certificado como certificado raíz en una cadena [duplicado]

1

Suponga que tiene una cadena de certificado (X509 v3) que se le envía para su validación. La cadena que se le envió puede o no incluir el certificado de CA raíz. ¿Hay una manera confiable de averiguar si este es el caso?

Obviamente, solo el certificado en la parte superior de la jerarquía puede ser el certificado de CA raíz, pero ¿cómo puedo verificar esto? Se me ocurrió un cheque para la igualdad entre el emisor y el sujeto, y esto parece funcionar bien para todos los casos que encontré hasta ahora, pero no estoy seguro de si es infalible.

Editar: No se trata de una verificación manual o acerca de qué herramienta usar, se trata de una verificación programática. Por lo tanto, usar openSSl para realizar comprobaciones (como se sugiere en un reclamo de 'posible duplicado') no es una opción. La pregunta es qué atributos o extensiones de certificado puedo usar de qué manera para identificar de manera confiable un certificado de CA raíz en una cadena dada.

Para hacer la pregunta aún más al punto: sugerí verificar si subject==issuer desde el principio. La pregunta es si este es un enfoque infalible. Entonces, ¿es posible confiar en el hecho de que esto es cierto solo si es un certificado raíz? ¿Qué sucede si creo un certificado raíz y un certificado de CA intermedio derivado y, en este último, simplemente elijo el asunto igual al emisor? ¿Eso resultará en un certificado válido? (El identificador de clave de autoridad puede apuntar correctamente al identificador de clave de la CA raíz).

(Tenga en cuenta que no me pregunto cómo verificar si debo confiar en la cadena. Quiero saber cómo identificar de manera confiable un certificado de CA raíz en una cadena).

    
pregunta Thomas 11.08.2016 - 18:25
fuente

2 respuestas

1

Simplemente verifique si los campos Issuer y Subject son iguales. Si son iguales, el certificado es autofirmado y representa un certificado raíz. De lo contrario, el certificado es certificado intermedio. Por supuesto, la clave pública en el certificado raíz debe validar su propia firma.

Editar para seguir la edición OP:

  

La pregunta es qué atributos o extensiones de certificado puedo usar de qué manera para identificar de manera confiable un certificado de CA raíz en una cadena dada.

debe comprobar que el atributo isCA de la extensión del certificado Basic Constraints esté establecido en True en todos los certificados de CA. Y esta extensión DEBE estar marcada como crítica.

  

¿Qué sucede si creo un certificado raíz y un certificado de CA intermedio derivado y, en este último, simplemente selecciono el tema igual al emisor?

hay dos resultados:

  

El identificador de clave de autoridad puede apuntar correctamente al identificador de clave de la CA raíz

creará un bucle en la cadena que es detectado por la mayoría de los motores de encadenamiento de certificados. De lo contrario, el certificado no formará parte de su cadena con el certificado raíz e intermedio.

    
respondido por el Crypt32 11.08.2016 - 18:39
fuente
0

Debes verificar dos condiciones:

  1. El emisor es el mismo que el sujeto
  2. El certificado es de confianza

La segunda condición es obligatoria porque es muy probable que pase los certificados creados por una CA aleatoria.

    
respondido por el sandyp 11.08.2016 - 19:00
fuente

Lea otras preguntas en las etiquetas