如何从 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章