Ich wollte die in einem PKCS12-Keystore gespeicherten Zertifikate auflisten.
Der Keystore hat die Erweiterung .pfx
Ich wollte die in einem PKCS12-Keystore gespeicherten Zertifikate auflisten.
Der Keystore hat die Erweiterung .pfx
Antworten:
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
.p12
) funktionieren ? Ich bekommejava.io.IOException: Invalid keystore format
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
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
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.
openssl pkcs12 -info -in keystore_file