Comment lister les certificats stockés dans un keystore PKCS12 avec keytool?

Réponses:

146

Si le keystore est de type PKCS12 ( .pfx), vous devez le spécifier avec -storetype PKCS12(sauts de ligne ajoutés pour la lisibilité):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12
David García González
la source
6
Si vous préférez un utilitaire d'interface graphique, j'ai trouvé Keystore Explorer, un remplacement d'interface graphique open source pour les utilitaires de ligne de commande Java keytool, jarsigner et jadtool. keystore-explorer.sourceforge.net
David García González
Merci pour le conseil @David. C'est bien de voir que le projet est toujours actif, contrairement à tant d'autres projets de ce type!
John Rix
excellent conseil sur cet outil freeware - je préfère généralement les lignes de commande mais c'est très agréable
Rhubarb
1
Cela devrait-il fonctionner avec ( .p12)? Je reçoisjava.io.IOException: Invalid keystore format
IgniteCoders
Cela ne fonctionne pas avec un magasin de certificats P12 (mars 2019, dernière version de KeyTool)
Harald Coppoolse
29

Vous pouvez également utiliser opensslpour accomplir la même chose:

$ 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
la source
3
Juste pour dire que cela fonctionne aussi pour les fichiers .p12. Très utile, merci!
Rich Ross
@PhilipRego bien sûr que vous pouvez, mettez-les simplement entre guillemets simples.
slm
Je voulais voir l'alias aka friendlyname. Dû utiliser "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo le
3

Vous pouvez lister les entrées (détails des certificats) avec le keytool et même vous n'avez pas besoin de mentionner le type de magasin.

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
la source
Veuillez envisager d'expliquer votre code et comment cela aiderait, afin que d'autres puissent en bénéficier.
Amit Verma le
Mise à jour de la réponse.
harry
2

Ce qui manque dans la question et dans toutes les réponses, c'est que vous pourriez avoir besoin de la phrase de passe pour lire les données publiques du keystore PKCS # 12 (.pfx). Si vous avez besoin d'une phrase secrète ou non, cela dépend de la manière dont le fichier PKCS # 12 a été créé. Vous pouvez vérifier la structure ASN1 du fichier (en l'exécutant via un analyseur ASN1, openssl ou certutil peut également le faire), si les données PKCS # 7 (par exemple le préfixe OID 1.2.840.113549.1.7) sont répertoriées comme `` cryptées '' ou avec une spécification de chiffrement ou si l'emplacement des données dans l'arborescence asn1 est sous un nœud chiffré, vous ne pourrez pas le lire sans connaître la phrase de passe. Cela signifie que votre commande 'openssl pkcs12' échouera avec des erreurs (la sortie dépend de la version). Pour ceux qui se demandent pourquoi vous pourriez être intéressé par le certificat d'un PKCS # 12 sans connaître la phrase de passe. Imaginez que vous avez de nombreux keystores et de nombreuses phrases de phase et que vous êtes vraiment mauvais pour les garder organisés et que vous ne voulez pas tester toutes les combinaisons, le certificat à l'intérieur du fichier pourrait vous aider à trouver de quel mot de passe il pourrait s'agir. Ou vous développez un logiciel pour migrer / renouveler un keystore et vous devez décider à l'avance de la procédure à lancer en fonction du certificat contenu sans interaction de l'utilisateur. Ainsi, ces derniers exemples fonctionnent sans mot de passe en fonction de la structure PKCS # 12. Ou vous développez un logiciel pour migrer / renouveler un keystore et vous devez décider à l'avance de la procédure à lancer en fonction du certificat contenu sans interaction de l'utilisateur. Ainsi, ces derniers exemples fonctionnent sans mot de passe en fonction de la structure PKCS # 12. Ou vous développez un logiciel pour migrer / renouveler un keystore et vous devez décider à l'avance de la procédure à lancer en fonction du certificat contenu sans interaction de l'utilisateur. Ainsi, ces derniers exemples fonctionnent sans mot de passe en fonction de la structure PKCS # 12.

Je voulais juste ajouter cela, car je n'ai pas trouvé de réponse moi-même et j'ai passé beaucoup de temps à la comprendre.

xordonkey
la source
2
openssl pkcs12 -info -in keystore_file
MIchal Rudnicki
la source