Wie kann ein Fingerabdruck eines X509-Zertifikats in Java abgerufen / berechnet werden?
Ich habe ein java-client, der Aufruf eines web-service-operation, die dauert ein Zertifikat "Fingerabdruck" als parameter. Ich glaube, der Fingerabdruck ist eine Art der SHA1-hash in hexadezimal format-string, der das Zertifikat für den öffentlichen Schlüssel, aber ich bin mir nicht sicher.
Den .NET framework scheint zu gehören ein einfacher Weg, um diesen Wert (X509Certificate2.Fingerabdruck- Eigenschaft). Anzeigen ein .cer Datei-Eigenschaften im Windows zeigt auch den Fingerabdruck, sieht wie folgt aus:
a6 9c fd b0 58 0d a4 ee ae 9a 47 75 24 c3 0b 9f 5d b6 1c 77
Meine Frage ist daher: weiß jemand, wie das abrufen oder berechnen Sie diese Fingerabdruck-Zeichenfolge in Java, wenn ich eine Instanz einer java.Sicherheit.cert.X509Certificate?
InformationsquelleAutor der Frage Matt Z | 2009-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den SHA-1-hash des DER Codierung des Zertifikats ist es, was .NETTO ist immer mit X509Certificate2.Fingerabdruck.
Wie bereits auf der Bemerkungen auf der MSDN-Website:
Java-standard-Bibliothek nicht den Fingerabdruck direkt, aber Sie können es bekommen wie diese:
Hier ist ein komplettes Beispiel mit einer bequem zugänglichen PEM-Datei:
Erstellen stackoverflow.crt.pem -:
Erstellen X509.java:
Kompilieren Sie das Programm mit Java-8:
- Oder Java-9 - durch modulare JDK/JPMS - DataTypeConverter ist nicht in java.Basis, aber java.xml.binden, so müssen Sie explizit von ihm abhängen, während Ihr bauen:
Sonst, auf Java 9, erhalten Sie diese, wenn Sie versuchen, es zu bauen:
Ausführen mit Java 8:
In Java-9 - durch modulare JDK/JPMS - DataTypeConverter ist nicht in java.Basis, aber java.xml.binden, so müssen Sie explizit von ihm abhängen, wenn Sie mit Ihrem Programm:
Sonst, auf Java 9, erhalten Sie diese, wenn Sie versuchen, Sie auszuführen:
Erhalten die erwartete Ausgabe:
InformationsquelleAutor der Antwort ZZ Coder
Mithilfe von Apache Commons Codec, die Sie tun können:
InformationsquelleAutor der Antwort Martin Ždila
Erzeugen können Sie den Fingerabdruck mithilfe des openssl-Befehl, also beispielsweise, wenn Sie das pem-format des Zertifikats in eine Datei (file.txt)
dann:
cat file.txt | openssl x509 -sha1 -fingerprint
- dies erzeugt die gleichen FingerabdruckInformationsquelleAutor der Antwort Clarence
One-liner über die Google - Guave
InformationsquelleAutor der Antwort Ahmad Abdelghany
Hier einen einfacheren Weg:
InformationsquelleAutor der Antwort jay-nbt