当前位置: 首页 > 面试题库 >

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

皇甫波峻
2023-03-14
问题内容

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

我做错了什么?


问题答案:

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


 类似资料:
  • 让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?

  • 我有一个OpenSSH格式的私钥文件: 但我需要RSA格式: 在终端我会这样做: 但我需要用Java来做。 我尝试使用org.bouncycastle.openssl.PEMWriter,但我无法解决如何将我的输入键(作为输入字符串)转换为可传递给PEMWriter的Private ateKey对象。

  • 我有以下字符串格式的RSA私钥。 我正在尝试使用下面的代码片段将其转换为PrivateKey类型- 我正在犯错误- 它给我一个错误的生成私人方法。 尝试在这里使用Java的答案:将DKIM私钥从RSA转换为用于JavaMail的DER

  • 问题内容: 我正在编写一个使用Java Web服务的.NET客户端应用程序,并且需要对已发送的请求进行签名(与这个其他问题有关)。 我已经获得了private.key文件(和.X509证书)和Java源示例。证书看起来像服务的公共密钥,而private.key是我用来签署请求的密钥。 在Java源代码中,我可以看到它们将文件转换为字节数组,并将其传递给PKCS8EncodedKeySpec类的构造

  • 我正在尝试创建一个。p12不包含有效标识(公钥/私钥对)的文件,用于测试我的应用程序的证书导入功能。是否可以使用openssl工具执行此操作? 我已经试过了 但我有一个错误: 如果无法使用openssl进行此操作,是否可以使用其他工具?

  • 我需要支持Keytool的相同功能。exe通过使用KeyTool类编程将java密钥库转换为PFX文件。由于项目需求的限制,我无法从我的应用程序中使用命令提示符进程,因此通过编程,我也无法打开命令进程。 例如。 C:\keytool-importkeystore-srckeystore。k eystore-srcstoretype JKS-destkeystore-thekeystore。pfx-