如何使用私钥将 .pfx 文件转换为密钥库?

新手上路,请多包涵

我需要签署 Android 应用程序 ( .apk )。

我有 .pfx 文件。我通过 Internet Explorer 将其转换为 .cer 文件,然后使用 keytool 将 .cer 转换为 .keystore 。然后我尝试用 jarsigner 签名 .apk 但它说 .keystore 不包含私钥。

我做错了什么?

原文由 Ola 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 670
2 个回答

使用 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

原文由 MikeD 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发现 页面告诉您如何将 PFX 导入 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

原文由 kaptan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题