Comment calculer l'empreinte SHA-1 du certificat X.509?
Je suis en train de mettre en œuvre un X. 509 certificate générateur à partir de zéro (je sais à propos de ceux qui existent déjà, mais j'ai besoin d'encore un autre). Ce que je ne peut pas comprendre, c'est comment calculer le SHA-1 (ou tout autre) empreinte du certificat.
La RFC5280 dit que l'entrée de la signature de la fonction est la encodé DER tbsCertificate champ. Malheureusement, le hash que je calcule diffère de celle produite par OpenSSL. Voici une étape par étape exemple.
- générer un certificat à l'aide de l'installation de OpenSSL x509 outil (en binaire DER formulaire, pas l'ASCII PEM)
- calculer son empreinte SHA-1 à l'aide de
openssl x509 -fingerprint
- extrait de la SCT champ à l'aide de dd (ou autre chose) et de le stocker dans un fichier séparé; calculer son hachage à l'aide de la
sha1sum
utilitaire
Maintenant, les hachages je reçois les étapes 2 et 3 sont différents. Quelqu'un peut-il me donner une indication de ce que j'ai fait de mal?
source d'informationauteur Roman Dmitrienko
Vous devez vous connecter pour publier un commentaire.
Ok, donc il s'est avéré que l'empreinte calculée par OpenSSL est tout simplement une table de hachage sur le ensemble certificat (dans son DER codage binaire, pas l'ASCII PEM!), non seulement le SCT partie, comme je le pensais.
Pour quiconque se soucie de calcul du certificat de digérer, il est fait d'une manière différente: le hash est calculé au cours de la DER-codé (encore une fois, pas le PEM de la chaîne) du SCT partie seulementy compris de son ASN.1 en-tête (ID 0x30 == ASN1_SEQUENCE | ASN1_CONSTRUCTED et le champ de longueur). Veuillez noter que le certificat de l'ASN.1 en-tête n'est pas pris en compte.
Le doigt d'impression est similaire à l'expression "Empreinte".net. Ci-dessous extrait de code devrait vous aider à calculer le doigt d'impression :