2016-07-06 23 views
1

Für meiste Lernzwecke versuche ich bisher, ein SHA2-Zertifikat mit dem Java-Keytool zu generieren. Wenn ich jedoch die Schlüssel erzeuge, sagt es, dass Zertifikat-Fingerabdruck SHA1, nicht SHA2 ist.Java Keytool erstellt SHA1-Zertifikat, obwohl SHA2 angegeben wurde

keytool -genkey -alias test_sha2_rsa_key -keyalg RSA -keysize 2048 -keystore .keystore -sigalg "SHA256withRSA" 

Hier ist das Ergebnis, wenn ich die Schlüssel auflisten.

keytool -list 
Enter keystore password: 

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

test_sha2_rsa_key, Jul 6, 2016, PrivateKeyEntry, 
Certificate fingerprint (SHA1): DD:9E:55:B7:90:9F:91:6C:68:D3:5C:24:E7:D4:45:D1:7D:8C:3A:5A 

Ich lese das falsch oder mache ich falsch?

+4

Der Fingerabdruck hat nichts mit der Signatur zu tun. Sie können MD5, SHA1, SHA256 und wenn Sie Whirpool- und/oder Skein-Fingerabdrücke eines mit SHA512 signierten Zertifikats haben möchten usw. für alle Kombinationen haben. Probieren Sie '-list -v' aus, um (die meisten) Details des Certs zu sehen, einschließlich der Sigalg. –

+0

Danke. Ich werde die Frage aktualisieren. Ich habe mich geirrt. und du hast Recht. – Pred

Antwort

2

Der SHA-1-Fingerabdruck wird über das binäre (DER) -codierte Zertifikat berechnet. Es ist nicht im Zertifikat enthalten und ist - wie Dave bereits festlegte - nicht mit der Signatur über die tbsCertificate (dem zu unterzeichnenden Teil des Zertifikats) verwandt. Tatsächlich sind die Signaturalgorithmusreferenz (OID) und die Signatur selbst, da sie sich über das gesamte Zertifikat erstrecken, ebenfalls in den Fingerabdruckdaten enthalten.


Beachten Sie, dass ein Zertifikat von Fingerabdrücken unter Verwendung von SHA-1 etwa so sicher ist, ein Zertifikat mit SHA-1 als signieren. Es hängt davon ab, wie der Fingerabdruck verwendet wird, aber im Prinzip könnte dies zu einer Sicherheitslücke führen, wenn (oder wann) SHA-1 zerstört wird.

+1

Nun, jemand muss außerhalb der Kommentare antworten, oder? –