116 votes

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

Je voulais répertorier les certificats stockés dans un keystore PKCS12.

Le keystore a l'extension .pfx

183voto

Si le keystore est de type PKCS12 ( .pfx ), vous devez le spécifier avec -storetype PKCS12 (les retours à la ligne ont été ajoutés pour plus de lisibilité) :

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

53voto

slm Points 3435

Vous pouvez également utiliser openssl pour 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

16voto

Vous pouvez dresser la liste des entrées (détails des certificats) avec le keytool et vous n'avez même pas besoin de mentionner le type de magasin. De plus, l'outil .p12 y .pfx sont tous deux PKCS#12 des dossiers. Supposons que vous ayez le fichier keystore cert.pfx ou cert.p12 alors vous pouvez utiliser la commande suivante pour lister le contenu.

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

ou

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

12voto

MIchal Rudnicki Points 89
openssl pkcs12 -info -in keystore_file

2voto

xordonkey Points 41

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). La nécessité d'une phrase de passe ou non dépend de la façon dont le fichier PKCS#12 a été créé. Vous pouvez vérifier la structure ASN1 du fichier (en le faisant passer par un analyseur ASN1, openssl ou certutil peuvent aussi le faire), si les données PKCS#7 (par exemple le préfixe OID 1.2.840.113549.1.7) sont listées comme 'cryptées' ou avec un spécificateur de chiffrement ou si l'emplacement des données dans l'arbre asn1 est en dessous d'un noeud crypté, vous ne pourrez pas les 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 beaucoup de keystores et beaucoup de phrases de passe et que vous êtes vraiment mauvais à 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 quel mot de passe il pourrait être. Ou bien vous développez un logiciel pour migrer/renouveler un keystore et vous devez décider à l'avance de la procédure à lancer sur la base du certificat contenu dans le fichier, sans interaction avec l'utilisateur. Ces derniers exemples fonctionnent donc sans phrase de passe selon 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 à le découvrir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X