Vérification de l'empreinte digitale d'un certificat SSL?

26

Je joue avec un agent Puppet et un maître Puppet et j'ai remarqué que l'utilitaire Puppet cert fournit une empreinte digitale pour la clé publique de mon agent car il a demandé à être signé:

$ puppet cert list
  "dockerduck" (SHA256) 1D:72:C5:42:A5:F4:1C:46:35:DB:65:66:B8:B8:06:28:7A:D4:40:FA:D2:D5:05:1A:8F:43:60:6C:CA:D1:FF:79

Comment puis-je vérifier que c'est la bonne clé?

Sur l'agent Puppet, prendre un sha256summe donne quelque chose de radicalement différent:

$ sha256sum /var/lib/puppet/ssl/public_keys/dockerduck.pem
f1f1d198073c420af466ec05d3204752aaa59ebe3a2f593114da711a8897efa3

Si je me souviens bien, les certificats fournissent des sommes de contrôle de leurs clés publiques dans les fichiers de clés eux-mêmes. Comment puis-je accéder à une ou plusieurs empreintes digitales de clés?

Naftuli Kay
la source
1
L'empreinte digitale du certificat n'est pas le hachage du fichier pem, elle est calculée en fonction de champs spécifiques du certificat organisés dans un format et un ordre spécifiques.
Dobes Vandermeer

Réponses:

39

L'utilitaire de ligne de commande OpenSSL peut être utilisé pour inspecter les certificats (et les clés privées, et bien d'autres choses). Pour tout voir dans le certificat, vous pouvez faire:

openssl x509 -in CERT.pem -noout -text

Pour obtenir l'empreinte SHA256, vous devez:

openssl x509 -in CERT.pem -noout -sha256 -fingerprint
derobert
la source
1
unable to load certificate 140640672884384:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATEDes idées?
Naftuli Kay
@NaftuliTzviKay Peut-être qu'ils ne sont pas au format PEM. À quoi ressemblent les fichiers? (ou pouvez-vous en générer un de test que vous n'utiliserez pas et le publier quelque part?)
derobert
Voici la clé publique mentionnée dans le message d'origine: pastebin.com/ae2Qtexc
Naftuli Kay
@NaftuliKay vous devez avoir votre certificat au format pem.
M_AWADI
9

La meilleure façon de confirmer l'empreinte digitale de l'agent, au moins dans Puppet 3.6, est d'exécuter la commande suivante dans votre agent:

puppet agent --fingerprint
mpaf
la source