Überprüfen des Fingerabdrucks eines SSL-Zertifikats?

26

Ich spiele mit einem Puppet-Agenten und einem Puppet-Meister und habe festgestellt, dass das Puppet-Zertifizierungsdienstprogramm einen Fingerabdruck für den öffentlichen Schlüssel meines Agenten bereitstellt, da er zur Unterschrift aufgefordert wurde:

$ 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

Wie überprüfe ich, ob dies der richtige Schlüssel ist?

Beim Puppet-Agenten sha256sumergibt sich durch die Aufnahme von etwas dramatisch anderes:

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

Wenn ich mich richtig erinnere, enthalten Zertifikate Prüfsummen ihrer öffentlichen Schlüssel in den eigentlichen Schlüsseldateien. Wie kann ich auf einen oder mehrere Fingerabdrücke eines Schlüssels zugreifen?

Naftuli Kay
quelle
1
Der Fingerabdruck des Zertifikats ist nicht der Hash der PEM-Datei, sondern wird basierend auf bestimmten Feldern im Zertifikat berechnet, die in einem bestimmten Format und in einer bestimmten Reihenfolge angeordnet sind.
Dobes Vandermeer

Antworten:

39

Das OpenSSL-Befehlszeilendienstprogramm kann zum Überprüfen von Zertifikaten (und privaten Schlüsseln und vielen anderen Dingen) verwendet werden. Um alles im Zertifikat zu sehen, können Sie Folgendes tun:

openssl x509 -in CERT.pem -noout -text

So erhalten Sie den SHA256-Fingerabdruck:

openssl x509 -in CERT.pem -noout -sha256 -fingerprint
derobert
quelle
1
unable to load certificate 140640672884384:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATEIrgendwelche Ideen?
Naftuli Kay
@NaftuliTzviKay Vielleicht sind sie nicht im PEM-Format. Wie sehen die Dateien aus? (Oder können Sie einen Test generieren, den Sie nicht verwenden, und ihn irgendwo veröffentlichen?)
Derobert
Hier ist der öffentliche Schlüssel im Sinne der ursprünglichen Nachricht: pastebin.com/ae2Qtexc
Naftuli Kay
@NaftuliKay Sie müssen Ihr Zertifikat in Form von PEM-Format haben.
M_AWADI
9

Die beste Möglichkeit, den Fingerabdruck des Agenten zu bestätigen, besteht zumindest in Puppet 3.6 darin, in Ihrem Agenten den folgenden Befehl auszuführen:

puppet agent --fingerprint
mpaf
quelle