Wie liste ich die in einem PKCS12-Keystore mit Keytool gespeicherten Zertifikate auf?

88

Ich wollte die in einem PKCS12-Keystore gespeicherten Zertifikate auflisten.

Der Keystore hat die Erweiterung .pfx

David García González
quelle

Antworten:

146

Wenn der Schlüsselspeicher vom Typ PKCS12 ( .pfx) ist, müssen Sie ihn mit angeben -storetype PKCS12(Zeilenumbrüche zur besseren Lesbarkeit hinzugefügt):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12
David García González
quelle
6
Wenn Sie ein Dienstprogramm für grafische Benutzeroberflächen bevorzugen, habe ich Keystore Explorer gefunden, einen Open-Source-GUI-Ersatz für die Java-Befehlszeilenprogramme Keytool, Jarsigner und Jadtool. keystore-explorer.sourceforge.net
David García González
Danke für den Tipp @David. Schön zu sehen, dass das Projekt auch noch aktiv ist, im Gegensatz zu so vielen anderen solchen Projekten!
John Rix
ausgezeichneter Tipp für dieses Freeware-Tool - Ich bevorzuge im Allgemeinen Befehlszeilen, aber das ist sehr schön
Rhabarber
1
Sollte das mit ( .p12) funktionieren ? Ich bekommejava.io.IOException: Invalid keystore format
IgniteCoders
Dies funktioniert nicht mit einem P12-Zertifikatspeicher (März 2019, neueste KeyTool-Version)
Harald Coppoolse
29

Sie können auch verwenden openssl, um dasselbe zu erreichen:

$ openssl pkcs12 -nokeys -info \
    -in </path/to/file.pfx> \
    -passin pass:<pfx's password>

MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    localKeyID: XX XX XX XX XX XX XX XX XX XX XX XX XX 48 54 A0 47 88 1D 90
    friendlyName: jedis-server
subject=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXX/CN=something1
issuer=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXXX/CN=something1
-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
slm
quelle
3
Um nur zu sagen, es funktioniert auch für .p12-Dateien. Sehr hilfreich, danke!
Rich Ross
@PhilipRego sicher, dass Sie können, wickeln Sie sie einfach in einfache Anführungszeichen.
Slm
Ich wollte den Alias ​​aka Friendlyname sehen. Musste "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>" verwenden
Domo
3

Sie können die Einträge (Zertifikatsdetails) mit dem Keytool auflisten, und selbst Sie müssen den Speichertyp nicht erwähnen.

keytool -list -v -keystore cert.p12 -storepass <password>

 Keystore type: PKCS12
 Keystore provider: SunJSSE

 Your keystore contains 1 entry
 Alias name: 1
 Creation date: Jul 11, 2020
 Entry type: PrivateKeyEntry
 Certificate chain length: 2
Harry
quelle
Bitte überlegen Sie, Ihren Code zu erklären und wie er helfen würde, damit andere davon profitieren können.
Amit Verma
Die Antwort wurde aktualisiert.
Harry
2

Was in der Frage und allen Antworten fehlt, ist, dass Sie möglicherweise die Passphrase benötigen, um öffentliche Daten aus dem PKCS # 12 (.pfx) -Schlüsselspeicher zu lesen. Ob Sie eine Passphrase benötigen oder nicht, hängt davon ab, wie die PKCS # 12-Datei erstellt wurde. Sie können die ASN1-Struktur der Datei überprüfen (indem Sie sie über einen ASN1-Parser ausführen, OpenSL oder Certutil können dies auch), wenn die PKCS # 7-Daten (z. B. OID-Präfix 1.2.840.113549.1.7) als "verschlüsselt" oder "verschlüsselt" aufgeführt sind Mit einer Verschlüsselungsspezifikation oder wenn sich die Position der Daten im asn1-Baum unter einem verschlüsselten Knoten befindet, können Sie sie ohne Kenntnis der Passphrase nicht lesen. Dies bedeutet, dass Ihr Befehl 'openssl pkcs12' mit Fehlern fehlschlägt (Ausgabe hängt von der Version ab). Für diejenigen, die sich fragen, warum Sie möglicherweise an dem Zertifikat eines PKCS # 12 interessiert sind, ohne die Passphrase zu kennen. Stellen Sie sich vor, Sie haben viele Schlüsselspeicher und viele Phassphrasen und sind wirklich schlecht darin, sie organisiert zu halten. Sie möchten nicht alle Kombinationen testen. Das Zertifikat in der Datei kann Ihnen dabei helfen, herauszufinden, um welches Kennwort es sich handelt. Oder Sie entwickeln Software zum Migrieren / Erneuern eines Schlüsselspeichers und müssen im Voraus entscheiden, welches Verfahren basierend auf dem enthaltenen Zertifikat ohne Benutzerinteraktion initiiert werden soll. Die letzteren Beispiele funktionieren also abhängig von der PKCS # 12-Struktur ohne Passphrase. Oder Sie entwickeln Software zum Migrieren / Erneuern eines Schlüsselspeichers und müssen im Voraus entscheiden, welches Verfahren basierend auf dem enthaltenen Zertifikat ohne Benutzerinteraktion initiiert werden soll. Die letzteren Beispiele funktionieren also abhängig von der PKCS # 12-Struktur ohne Passphrase. Oder Sie entwickeln Software zum Migrieren / Erneuern eines Schlüsselspeichers und müssen im Voraus entscheiden, welches Verfahren basierend auf dem enthaltenen Zertifikat ohne Benutzerinteraktion initiiert werden soll. Die letzteren Beispiele funktionieren also abhängig von der PKCS # 12-Struktur ohne Passphrase.

Ich wollte das nur hinzufügen, weil ich selbst keine Antwort gefunden habe und viel Zeit damit verbracht habe, es herauszufinden.

Xordonkey
quelle
2
openssl pkcs12 -info -in keystore_file
MIchal Rudnicki
quelle