Obtenha o valor SHA256 para o identificador de chave do assunto

Obtenha o valor SHA256 para o identificador de chave do assunto

Usando Keytool podemos visualizar os detalhes de um Keystore com o comando

keytool -list -v -keystore <KeystoreName>

Isso retorna um conjunto de valores, incluindo um identificador de chave de assunto

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 é o identificador de chave SHA1. Como obtenho o identificador de chave SHA 256 para o mesmo keystore?

Responder1

OIdentificador-chave do assunto(SKI ou SKID) é uma propriedade (uma extensão X.509) de um certificado individual.

Normalmente é calculado como um hash SHA-1 quando um certificado está sendo assinado. Os dados com hash podem variar, mas normalmente incluirão pelo menos oassuntoPublicKeysequência de bits e pode não ser um valor SHA-1 completo de 160 bits.

As únicas coisas que (tecnicamente) se preocupam com a forma como o hash é criado são o sistema que faz a assinatura, ou às vezes o sistema que cria a solicitação, já que ele pode ser adicionado a uma solicitação. Fora isso, é tratado como uma impressão digital opaca ou ID único - seu valor só precisa ser comparado para identificar um certificado específico ou seu emissor (para auxiliar e otimizarverificação de caminho), não precisa ser recalculado.

Se quiser calcular corretamente o hash SHA-256, você precisará descobrir quais campos exatamente seu sistema usa para calcular o hash e usá-los como entrada para SHA-256. VerRFC 5280, especialmente§4.2.1.1e§4.2.1.2. Os dados assinados sãoprovavelmenteapenas oassuntoPublicKeyouassuntoPublicKeyInfono formato DER binário, este último parece ser o caso de um certificado assinado OpenSSL.

Este rascunho de RFC (expirado) propõe o uso de hashes SHA-2 para identificadores de chave de assunto: https://datatracker.ietf.org/doc/html/draft-turner-additional-methods-4kis-08

Há uma solicitação de recurso e um patch para isso que está um pouco debilitado emBug #2599 do OpenSSL

Responder2

Ele não existe e você realmente não precisa que ele exista. Um certificado precisa apenas de umexclusivoidentificador na propriedade Subject Key IDentifier que pode informar ao seu sistema qual chave usar para descriptografá-lo. Nem precisa ser um hash, só precisa ser único. Você também poderia usar o texto "Zeutheus Key #1" para um SKID, desde que não o reutilize para rotular uma chave diferente.

Se você realmente deseja usar o SHA-256 para gerar um SKID, vá em frente. Depois de obtê-lo, você terá que criar uma nova solicitação de certificado que use o novo valor e assiná-la. Algumas ferramentas, como o certutil.exe da Microsoft, permitem definir o valor específico para qualquer OID em uma solicitação de certificado. Você pode gerar o hash SHA-256 da sua chave pública e, em seguida, colocar esse valor no SKID OID. Mas isso é muito trabalho que você não precisa fazer quando o padrão é gerar um hash SHA-1 que funcione bem o suficiente para esse propósito.

informação relacionada