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

2022-08-31 08:11:36

我需要签署安卓应用程序()。
我有文件。我通过Internet Explorer将其转换为文件,然后转换为使用keytool。然后我尝试使用jarsigner进行签名,但它说.keystore不包含私钥。.apk.pfx.cer.cer.keystore.apk

我做错了什么?


答案 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

答案 2

我发现这个页面告诉你如何将PXX导入JKS(Java密钥库):

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 
-srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE 
-deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

推荐