Volevo elencare i certificati archiviati in un keystore PKCS12.
Il keystore ha l'estensione .pfx
Volevo elencare i certificati archiviati in un keystore PKCS12.
Il keystore ha l'estensione .pfx
Risposte:
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
.p12
)? Ottengojava.io.IOException: Invalid keystore format
Puoi anche usare openssl
per 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
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
openssl pkcs12 -info -in keystore_file
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.