¿Cuál es el valor real de una huella digital de certificado?

30

En un certificado digital x509 hay una sección de "huella digital de certificado". Contiene md5, sha1 y sha256. ¿Cómo se obtienen, y durante la conexión SSL, cómo se verifican estos valores?

    
pregunta Ashwin 30.04.2012 - 15:48
fuente

1 respuesta

37

La huella digital, como se muestra en la sección de Huellas digitales cuando se mira un certificado con Firefox o la huella digital en IE es el hash del entero certificado en forma DER.

Si su certificado está en formato PEM, conviértalo a DER con OpenSSL:

openssl x509 -in cert.crt -outform DER -out cert.cer

Luego, realiza un hash SHA-1 en él (por ejemplo, con sha1sum1 ):

sha1sum cert.cer

Esto debería producir el mismo resultado que lo que ves en el navegador. Estos valores no forman parte del certificado, sino que se calculan a partir del certificado.

Una aplicación de estas huellas digitales es validar certificados EV. En este caso, la huella digital SHA-1 del certificado CA raíz de EV es codificada en el navegador (tenga en cuenta que (a) es la huella digital del certificado raíz y (b) tiene que coincidir exactamente con los anclajes de confianza suministrados con la versión del navegador compilada con esos valores).

Además de esto, estas huellas digitales se utilizan principalmente para identificar los certificados (para organizarlos).

Son las claves públicas reales que se utilizan para la verificación de otros certificados en la cadena. El resumen utilizado para firmar el certificado no está realmente en el certificado (solo la firma resultante). Consulte estructura del certificado :

   Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        ...

En este caso, el valor de la firma se calcula a partir del certificado tbs Certificado DER (es decir, su contenido). Cuando el algoritmo de firma es SHA1 con RSA (por ejemplo), se calcula un resumen de SHA-1 y luego se firma con la clave privada RSA del emisor. Este resumen de SHA-1 no tiene nada que ver con la huella dactilar mostrada por openssl x509 -fingerprint o dentro del navegador, ya que es la de la sección del certificado tbs solamente.

También hay un par de extensiones no relacionadas que pueden usar compendios, de las claves públicas esta vez: el identificador de clave de sujeto y el identificador de clave de autoridad . Estos son opcionales (y están dentro del contenido TBS del certificado).

    
respondido por el Bruno 30.04.2012 - 18:41
fuente