
Usando Keytool podemos ver los detalles de un Keystore con el comando
keytool -list -v -keystore <KeystoreName>
Esto devuelve un conjunto de valores que incluye un identificador de clave de sujeto.
SubjectKeyIdentifier [
KeyIdentifier [
0000: 60 7B 66 1A 45 0D 97 4B CA 89 50 2F 7D 04 CD 34
0010: A8 FF FC FD
]
]
Este es el identificador de clave SHA1. ¿Cómo obtengo el identificador de clave SHA 256 para el mismo almacén de claves?
Respuesta1
ElIdentificador de clave de asunto(SKI o SKID) es una propiedad (una extensión X.509) de un certificado individual.
Por lo general, se calcula como un hash SHA-1 cuando se firma un certificado; los datos que se procesan pueden variar, pero normalmente incluirán al menos elasuntoClavePúblicacadena de bits y es posible que no sea un valor SHA-1 completo de 160 bits.
Lo único que (técnicamente) se preocupa por cómo se crea el hash es el sistema que firma o, a veces, el sistema que crea la solicitud, ya que se puede agregar a una solicitud. Fuera de eso, se trata como una huella digital opaca o una identificación única: su valor sólo necesita compararse para identificar un certificado específico o su emisor (para ayudar y optimizarcomprobación de ruta), no es necesario volver a calcularlo.
Si desea calcular correctamente el hash SHA-256, deberá averiguar qué campos utiliza exactamente su sistema para calcular el hash y utilizarlos como entrada para SHA-256. VerRFC 5280, especialmente§4.2.1.1y§4.2.1.2. Los datos firmados sonprobablementesolo elasuntoClavePúblicaoasuntoPublicKeyInfoen formato DER binario, este último parece ser el caso de un certificado firmado OpenSSL.
Este borrador de RFC (vencido) propone el uso de hashes SHA-2 para identificadores de claves de sujetos: https://datatracker.ietf.org/doc/html/draft-turner-additional-methods-4kis-08
Hay una solicitud de función y un parche para esto que languidece ligeramente enError de OpenSSL n.º 2599
Respuesta2
No existe y realmente no es necesario que exista. Un certificado sólo necesita unúnicoidentificador en la propiedad Identificador de clave de sujeto que puede indicarle a su sistema qué clave usar para descifrarlo. Ni siquiera es necesario que sea un hash, sólo que sea único. También podrías usar el texto "Zeutheus Key #1" para un SKID, siempre y cuando no lo reutilices para etiquetar una clave diferente.
Si realmente desea utilizar SHA-256 para generar un SKID, adelante. Una vez que lo tenga, deberá crear una nueva solicitud de certificado que utilice el nuevo valor y firmarla. Algunas herramientas, como certutil.exe de Microsoft, le permiten establecer el valor específico para cualquier OID en una solicitud de certificado. Puede generar el hash SHA-256 de su clave pública y luego colocar ese valor en el SKID OID. Pero eso es mucho trabajo que no tienes que hacer cuando el valor predeterminado es generar un hash SHA-1 que funcione lo suficientemente bien para ese propósito.