Come elencare i certificati archiviati in un keystore PKCS12 con keytool?


Risposte:


146

Se il keystore è di tipo PKCS12 ( .pfx) devi specificarlo con -storetype PKCS12(interruzioni di riga aggiunte per leggibilità):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12

7
Se preferisci un'utilità di interfaccia grafica, ho trovato Keystore Explorer, una GUI open source che sostituisce le utilità della riga di comando Java keytool, jarsigner e jadtool. keystore-explorer.sourceforge.net
David García González

Grazie per il suggerimento @David. Bello vedere che il progetto è ancora attivo, a differenza di tanti altri progetti simili!
John Rix,

ottimo suggerimento su quello strumento freeware - In genere preferisco le righe di comando ma questo è molto carino
Rabarbaro

1
Questo dovrebbe funzionare con ( .p12)? Ottengojava.io.IOException: Invalid keystore format
IgniteCoders

Questo non funziona con un archivio certificati P12 (marzo 2019, versione più recente di KeyTool)
Harald Coppoolse

29

Puoi anche usare opensslper ottenere la stessa cosa:

$ 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

3
Solo per dire che funziona anche per i file .p12. Molto utile, grazie!
Rich Ross

@PhilipRego certo che puoi, racchiudili tra virgolette singole.
slm

Volevo vedere l'alias aka friendlyname. Ho dovuto usare "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo

6

Puoi elencare le voci (dettagli dei certificati) con il keytool e anche tu non è necessario menzionare il tipo di negozio.

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

Si prega di considerare di spiegare il codice e come potrebbe aiutare, in modo che altri possano trarne vantaggio.
Amit Verma

Aggiornata la risposta.
Harry il


2

Quello che manca nella domanda e in tutte le risposte è che potresti aver bisogno della passphrase per leggere i dati pubblici dal keystore PKCS # 12 (.pfx). La necessità o meno di una passphrase dipende da come è stato creato il file PKCS # 12. È possibile controllare la struttura ASN1 del file (eseguendolo tramite un parser ASN1, anche openssl o certutil possono farlo), se i dati PKCS # 7 (ad esempio il prefisso OID 1.2.840.113549.1.7) sono elencati come "crittografati" o con una specifica di crittografia o se la posizione dei dati nell'albero asn1 è al di sotto di un nodo crittografato, non sarai in grado di leggerlo senza conoscere la passphrase. Significa che il tuo comando "openssl pkcs12" fallirà con errori (l'output dipende dalla versione). Per coloro che si chiedono perché potresti essere interessato al certificato di un PKCS # 12 senza conoscere la passphrase. Immagina di avere molti keystore e molte frasi di fase e di non riuscire a mantenerli organizzati e di non voler testare tutte le combinazioni, il certificato all'interno del file potrebbe aiutarti a scoprire quale password potrebbe essere. Oppure stai sviluppando un software per migrare / rinnovare un keystore e devi decidere in anticipo quale procedura avviare in base al certificato contenuto senza interazione dell'utente. Quindi gli ultimi esempi funzionano senza passphrase a seconda della struttura PKCS # 12. Oppure stai sviluppando un software per migrare / rinnovare un keystore e devi decidere in anticipo quale procedura avviare in base al certificato contenuto senza interazione dell'utente. Quindi gli ultimi esempi funzionano senza passphrase a seconda della struttura PKCS # 12. Oppure stai sviluppando un software per migrare / rinnovare un keystore e devi decidere in anticipo quale procedura avviare in base al certificato contenuto senza interazione dell'utente. Quindi gli ultimi esempi funzionano senza passphrase a seconda della struttura PKCS # 12.

Volevo solo aggiungere questo, perché non ho trovato una risposta da solo e ho speso molto tempo per capirlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.