108

我想列出存储在 PKCS12 密钥库中的证书。

密钥库具有扩展名.pfx

4

5 回答 5

164

如果密钥库是 PKCS12 类型 ( .pfx),您必须指定它-storetype PKCS12(添加换行符以提高可读性):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12
于 2013-01-17T08:56:16.893 回答
46

你也可以openssl用来完成同样的事情:

$ 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
于 2018-02-10T05:42:47.893 回答
12

您可以使用 keytool 列出条目(证书详细信息),甚至不需要提及商店类型。此外,.p12and.pfx都是PKCS#12文件。假设您有密钥库文件cert.pfx,或者cert.p12您可以使用以下命令列出内容。

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

或者

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
于 2020-07-11T12:04:52.813 回答
8
openssl pkcs12 -info -in keystore_file
于 2020-06-18T08:15:07.867 回答
2

问题和所有答案中缺少的是您可能需要密码来从 PKCS#12 (.pfx) 密钥库中读取公共数据。是否需要密码取决于 PKCS#12 文件的创建方式。如果 PKCS#7 数据(例如 OID 前缀 1.2.840.113549.1.7)被列为“加密”或使用密码规范,或者如果 asn1 树中数据的位置低于加密节点,则在不知道密码短语的情况下将无法读取它。这意味着您的“openssl pkcs12”命令将失败并出现错误(输出取决于版本)。对于那些想知道为什么您可能对 PKCS#12 的证书感兴趣而不知道密码短语的人。想象一下,您有许多密钥库和许多短语,而您在保持它们的组织方面确实很糟糕,并且您不想测试所有组合,文件中的证书可以帮助您找出它可能是哪个密码。或者您正在开发用于迁移/更新密钥库的软件,您需要根据包含的证书提前决定启动哪个过程,而无需用户交互。因此,后面的示例在没有密码短语的情况下工作,具体取决于 PKCS#12 结构。或者您正在开发用于迁移/更新密钥库的软件,您需要根据包含的证书提前决定启动哪个过程,而无需用户交互。因此,后面的示例在没有密码短语的情况下工作,具体取决于 PKCS#12 结构。或者您正在开发用于迁移/更新密钥库的软件,您需要根据包含的证书提前决定启动哪个过程,而无需用户交互。因此,后面的示例在没有密码短语的情况下工作,具体取决于 PKCS#12 结构。

只是想补充一下,因为我自己没有找到答案,花了很多时间弄清楚。

于 2020-02-07T09:46:08.330 回答