Certificate 如何使用keytool列出PKCS12密钥库中存储的证书?

Certificate 如何使用keytool列出PKCS12密钥库中存储的证书?,certificate,ssl-certificate,keystore,pkcs#12,Certificate,Ssl Certificate,Keystore,Pkcs#12,我想列出PKCS12密钥库中存储的证书 密钥库具有扩展名.pfx如果密钥库是PKCS12类型(.pfx),则必须使用-storetype PKCS12指定它(为可读性增加了换行符): keytool-list-v-keystore\ -商店通行证\ -存储类型PKCS12 您也可以使用来完成相同的任务: $ openssl pkcs12 -nokeys -info \ -in </path/to/file.pfx> \ -passin pass:<pfx's p

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


密钥库具有扩展名
.pfx

如果密钥库是PKCS12类型(
.pfx
),则必须使用
-storetype PKCS12
指定它(为可读性增加了换行符):

keytool-list-v-keystore\
-商店通行证\
-存储类型PKCS12
您也可以使用来完成相同的任务:

$ 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
$openssl pkcs12-nokeys-info\
-在\

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


我只是想补充一下,因为我自己没有找到答案,并且花了很多时间来找出答案。

您可以使用keytool列出条目(证书详细信息),甚至不需要提及商店类型

openssl pkcs12 -info -in keystore_file
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
keytool-list-v-keystore cert.p12-storepass
密钥库类型:PKCS12
密钥库提供程序:SunJSSE
您的密钥库包含1个条目
别名:1
创建日期:2020年7月11日
条目类型:PrivateKeyEntry
证书链长度:2

如果您喜欢图形界面实用程序,我发现Keystore Explorer是Java命令行实用程序keytool、jarsigner和jadtool的开源GUI替代品。谢谢你的提示@David。很高兴看到该项目仍处于活动状态,与其他许多此类项目不同!关于这个免费软件工具的绝妙提示-我通常更喜欢命令行,但这非常好,应该与(
.p12
)一起使用吗?我得到
java.io.IOException:Invalid keystore format
这不适用于P12证书存储(2019年3月,最新的KeyTool版本),只是说它也适用于.P12文件。非常有帮助,谢谢@PhilipRego当然可以,用单引号括起来。我想看看别名aka friendlyname。必须使用“OpenSSL PKCS12 -节点-通行证通行证”:请考虑解释您的代码和它将如何帮助,以便其他人可以从中受益。更新答案。