一尘不染

如何将.pfx文件转换为带有私钥的密钥库?

java

我需要签署Android应用程序(.apk)。
我有.pfx档案 我把它转化为.cer通过Internet
Explorer文件,然后转换.cer.keystore使用密钥工具。然后,我尝试.apk用jarsigner
签名,但是它说.keystore不包含私钥。

我做错了什么?


阅读 346

收藏
2020-09-09

共1个答案

一尘不染

使用JDK 1.6或更高版本

贾斯汀(Justin)在下面的评论中指出,仅keytool能够使用以下命令来执行此操作(尽管仅在JDK 1.6和更高版本中):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

使用JDK 1.5或更低版本

OpenSSL可以完成所有工作。到目前为止,关于JGuru的答案是我发现的最佳方法。

首先,请确保您已安装OpenSSL。正如我在Mac OS X上发现的那样,已经安装了许多操作系统。

以下两个命令将pfx文件转换为可以作为Java PKCS12密钥存储打开的格式:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

注意,第二个命令中提供的名称是新密钥库中密钥的别名。

您可以使用Java keytool实用程序通过以下命令来验证密钥存储的内容:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

最后,如果需要,可以通过将上面创建的密钥库导入到新的密钥库中,将其转换为JKS密钥库:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
2020-09-09