Je voulais lister les certificats stockés dans un keystore PKCS12.
Le keystore a l'extension .pfx
Je voulais lister les certificats stockés dans un keystore PKCS12.
Le keystore a l'extension .pfx
Réponses:
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
.p12
)? Je reçoisjava.io.IOException: Invalid keystore format
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 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
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.
openssl pkcs12 -info -in keystore_file