如何从 Java 密钥库创建 PFX 文件?

Posted

技术标签:

【中文标题】如何从 Java 密钥库创建 PFX 文件?【英文标题】:How can I create a PFX file from a Java Keystore? 【发布时间】:2010-10-06 08:53:39 【问题描述】:

我有一个持有单个证书的 Java 密钥库(.jks 文件)。如何从此密钥库创建 .pfx 文件?

【问题讨论】:

【参考方案1】:

这个家伙() 似乎已经编写了一个小的 Java 类和批处理文件,并在此处提供了很好的说明:http://www.crionics.com/products/opensource/faq/signFree.htm#DownloadTools

如果你想自己做,.bat 文件中的关键行似乎是使用

keytool -export -rfc -keystore %KEYSTORE% -storepass %PASSWORD% -alias %ALIAS% > %CERT_64%
java -classpath %JAVACLASSPATH% ExportPrvKey %KEYSTORE% %PASSWORD% %ALIAS% > %PKEY_8%
openssl enc -in %PKEY_8% -a >> %PKEY_64%
openssl pkcs12 -inkey %PKEY_64% -in %CERT_64% -out %CERT_P12% -export

ExportPrvKey 执行从密钥库中提取私钥的步骤。

【讨论】:

感谢您的回答。我还发现了您通过 Google 链接的网站并进行了尝试。但是,最后一步对我来说失败了。 openssl 以消息终止:无法加载私钥任何其他提示将不胜感激! 查看私钥文件 (%PKEY_64%)。它真的存在吗?谷歌搜索似乎最常见的错误是将其放在错误的目录或格式错误。你有哪个版本的openssl? PKEY_64 文件存在并且看起来没问题(它包含 858 个“随机”ascii 字符)。我在 linux 机器上使用 openssl 0.9.7d。【参考方案2】:

在http://teddyhai.blogspot.com/2009/06/how-to-convert-java-jks-keystore-to.html查看指南

【讨论】:

这应该会得到更多的支持。这是最快的解决方案,点击次数最少,只需一点点 cmd 黑魔法,也是迄今为止我发现的唯一一个可以与多个 TrustedCertEntry 内部别名一起使用的解决方案。 完美!分步指南。【参考方案3】:

从 Java 6 开始,keytool 有一个 -importkeystore 选项,它应该能够将 JKS 存储转换为 PKCS#12 存储 (.p12/.pfx):

keytool -importkeystore -srckeystore thekeystore.jks \
            -srcstoretype JKS \
            -destkeystore thekeystore.pfx \
            -deststoretype PKCS12

它会要求您输入源和目标(jks、pfx)文件的密码

【讨论】:

使用此命令时出现以下错误:导入别名根条目时出现问题:java.security.KeyStoreException:不支持 TrustedCertEntry。你看到了吗? @mikebz 是的,PKCS#12 存储中不能只有证书的条目,它只适用于还有私钥的条目。【参考方案4】:

您可以使用以下命令导出包含私钥的 PFX 文件:

keytool -importkeystore -deststorepass secret -destkeypass secret -destkeystore KEYSTOREFILE.jks -srckeystore PFXFILE.pfx -srcstoretype PKCS12 -srcstorepass secret

【讨论】:

【参考方案5】:

keytool -importkeystore -srckeystore [MY_KEYSTORE.jks] -destkeystore [MY_FILE.p12] -srcstoretype JKS -deststoretype PKCS12

然后它会请求你的密码和 BAM - 很好,昨晚刚试过效果很好。

您可能必须先将 dir 更改为您的 java jdk 或 jre bin 文件夹,然后包含当前 Keystore 的完整路径和 dest .p12 文件。

【讨论】:

以上是关于如何从 Java 密钥库创建 PFX 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用keytool将证书创建到PKCS12密钥库?

如何从 pfx / cer 创建 snk?

有人做过wp上如何从pfx文件中获取私钥吗

从 Azure 密钥保管库存储和检索 JKS

Jenkins无法导入以下密钥文件

如何使用现有的 .cer、.p12 或 .pfx 证书签署应用程序?