Estoy tratando de implementar un generador de certificados X.509 desde cero (sé de los existentes, pero necesito uno más). Lo que no puedo entender es cómo calcular la huella digital SHA-1 (o cualquier otra) del certificado.¿Cómo se calcula la huella digital SHA-1 del certificado X.509?
El RFC5280 dice que la entrada a la función de firma es el campo tbsCertificate codificado DER. Desafortunadamente, el hash que calculo difiere del que produce OpenSSL. Aquí hay un ejemplo paso a paso.
- generar un certificado utilizando la herramienta x509 de OpenSSL (en una forma DER binario, no el ASCII PEM)
- calcular su hash SHA-1 usando
openssl x509 -fingerprint
- extraer el campo TBS usando dd (o cualquier cosa else) y almacenarlo en un archivo separado; calcular el hash utilizando la utilidad
sha1sum
Ahora, los hashes que recibo en los pasos 2 y 3 son diferentes. ¿Puede alguien darme una pista de lo que puedo estar haciendo mal?
Cuando se calcula el hash SHA-1 de la tbsCertificate, ¿Está utilizando [PKCS # 1] (http://tools.ietf.org/html/ rfc2313) relleno, como se especifica en [rfc 3279] (http://tools.ietf.org/html/rfc3279)? – sarnold
Uhm ... RFC2313 (PKCS # 1) solo especifica el cifrado RSA. Por lo que yo entiendo, ¿no se necesita relleno en la fase de computación de SHA-1? –
Ah, dicho sea de paso, en el Paso 3 calculo el hash usando la utilidad sha1sum –