Je voulais répertorier les certificats stockés dans un keystore PKCS12.
Le keystore a l'extension .pfx
Je voulais répertorier les certificats stockés dans un keystore PKCS12.
Le keystore a l'extension .pfx
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
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
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 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.