Cómo saber si el certificado es autofirmado

14

¿Cómo puedo saber si un certificado es autofirmado o autorizado por CA? En algún lugar leí que el asunto y emisor autofirmados serán los mismos, ¿es correcto?

    
pregunta Rahul_cs12 05.07.2015 - 18:08
fuente

4 respuestas

10

Sí, es verdad. Cuando el certificado está autofirmado, el campo emisor y asunto contiene el mismo valor. Además, solo habrá este certificado en la ruta del certificado.

    
respondido por el Vilican 05.07.2015 - 18:17
fuente
11

El certificado autofirmado tendrá campos de asunto y emisor idénticos, pero a) esto no está garantizado, yb) lo inverso no es cierto. Solo porque los campos tienen el mismo valor que no significa que el certificado sea autofirmado.

Aquí están los resultados de uno de nuestros certificados internos de raíz (root-ca.crt) e intermedios (ca.crt):

$ openssl x509 -subject -issuer -noout -in root-ca.crt 
subject= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA
issuer= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA

$ openssl x509 -subject -issuer -noout -in ca.crt 
subject= /CN=classmarkets CA/C=DE/L=Berlin/O=classmarkets GmbH/ST=Berlin
issuer= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA

Puede ver que los campos son los mismos para ambos certificados, aunque ca.crt ha sido firmado por root-ca.crt:

$ openssl x509 -noout -text -in ca.crt | grep -A1 'Key Identifier'
        X509v3 Authority Key Identifier: 
            keyid:A2:2D:AF:A0:D2:64:DF:30:F1:72:39:AC:21:AF:45:D6:D4:12:19:94
--
        X509v3 Subject Key Identifier: 
            30:B0:6B:B5:56:9A:95:7C:31:4B:B2:65:95:0D:F9:EE:E8:3D:3A:C9

$ openssl x509 -noout -text -in root-ca.crt | grep -A1 'Key Identifier'
        X509v3 Subject Key Identifier: 
            A2:2D:AF:A0:D2:64:DF:30:F1:72:39:AC:21:AF:45:D6:D4:12:19:94

Observe la ausencia del 'Identificador de clave de autoridad' en root-ca.crt.

RFC3280 establece en la sección 4.2.1.1 (enfatiza la mía):

  

El campo keyIdentifier de la extensión authorityKeyIdentifier DEBE      incluirse en todos los certificados generados por las CA correspondientes      Facilitar la construcción del camino de certificación. Hay una excepción;       donde una CA distribuye su clave pública en forma de "autofirmado"      certificado, el identificador de la clave de autoridad PUEDE omitirse . los      firma en un certificado autofirmado se genera con el privado      Clave asociada a la clave pública del sujeto del certificado. (Esta      prueba que el emisor posee tanto las claves públicas como las privadas.)       En este caso, los identificadores de clave de autoridad y sujeto serían      idéntico , pero solo se necesita el identificador de clave de asunto para      construcción de rutas de certificación.

Por lo tanto, me parece que los identificadores clave de Autoridad y Asunto son un indicador mucho mejor para los certificados autofirmados que los campos Emisor y Asunto. Para un certificado autofirmado, el Identificador de clave de autoridad estará ausente o tendrá el mismo valor que el Identificador de clave del sujeto.

    
respondido por el Peter 19.06.2017 - 17:41
fuente
3

La respuesta de @Vilican es técnicamente correcta y debería hacer el trabajo la mayor parte del tiempo. Pero quería saber si un certificado que estaba examinando (no algún sitio web en particular) se usó como un certificado autofirmado o si era un certificado CA.

Lo que descubrí es que los certificados de CA raíz válidos tienen el mismo emisor y sujeto. También Extensions - > Certificate Basic Constraints indica que esta es una CA, así como el número de CA intermedias permitidas para ser firmadas por esta.

Mientras que los certificados autofirmados utilizados para asegurar un sitio web generalmente no están marcados como CA, también tienen un nombre DNS como CN en Subject . Y / o tener una lista de nombres de DNS / direcciones IP permitidos en Extensions - > Certificate subject alt name .

    
respondido por el akostadinov 13.10.2016 - 09:22
fuente
2

Supongo que no es correcto verificar solo la concordancia entre el sujeto y el emisor de un certificado. Hay muchas opciones donde diferentes certificados con diferentes fechas de inicio / finalización u otros metadatos tienen el mismo asunto y el mismo emisor. Estoy usando el siguiente método para verificar que el certificado es autofirmado:

openssl verify -CAfile /cert/to/check.pem -CApath /cert/to/check.pem /cert/to/check.pem

Luego, si esta comprobación falla, es posible verificar si el certificado está firmado con otro certificado:

openssl verify -CAfile /cert/of/issuer.pem -CApath /cert/of/issuer.pem /cert/to/check.pem

La especificación del mismo certificado que CAfile y CApath evita la verificación exitosa contra los certificados de confianza predeterminados de OpenSSL.

    
respondido por el reddot 06.12.2016 - 13:44
fuente

Lea otras preguntas en las etiquetas