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

37

我有一个Java密钥库(.jks文件),其中只包含一个证书。如何从该密钥库创建.pfx文件?

4个回答

71

从Java 6开始,keytool提供了一个-importkeystore选项,可以将JKS存储转换为PKCS#12存储(.p12/.pfx):

keytool -importkeystore -srckeystore thekeystore.jks \
            -srcstoretype JKS \
            -destkeystore thekeystore.pfx \
            -deststoretype PKCS12
它将要求您为源和目标(jks、pfx)文件输入密码。

当我使用这个命令时,我遇到了以下错误:导入别名为root的条目时出现问题:java.security.KeyStoreException:不支持TrustedCertEntry。你见过这个吗? - mikebz
@mikebz 是的,您不能在PKCS#12存储中仅使用证书条目,它仅适用于同时存在私钥的条目。 - Bruno

3
这位用户似乎编写了一个小的Java类和批处理文件,并提供了很好的指导。您可以前往以下网址查看:http://www.crionics.com/products/opensource/faq/signFree.htm#DownloadTools 如果您想自己完成这个任务,.bat文件中的关键行似乎是uses。
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这个命令是从密钥库中提取私钥的步骤。


谢谢你的回答。我也通过谷歌找到了你提供的链接并尝试了一下。但是,最后一步对我来说失败了。openssl 终止并显示以下消息:无法加载私钥如果有任何其他提示,将不胜感激! - Christian Berg
请查看私钥文件(%PKEY_64%)。它是否真的存在?通过谷歌搜索,最常见的错误是将其放在错误的目录或格式不正确。您使用的openssl版本是哪个? - Nick Fortescue
PKEY_64文件存在且看起来正常(它包含858个“随机”的ASCII字符)。我在Linux系统上使用的是openssl 0.9.7d。 - Christian Berg

1

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

然后它会要求您输入密码,然后就可以进行操作了。我昨晚尝试过,效果很好。 您可能需要先更改目录到Java JDK或JRE bin文件夹,然后包括当前密钥库和目标.p12文件的完整路径。

-1
您可以使用以下命令导出包括私钥在内的PFX文件:
keytool -importkeystore -deststorepass secret -destkeypass secret -destkeystore KEYSTOREFILE.jks -srckeystore PFXFILE.pfx -srcstoretype PKCS12 -srcstorepass secret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接