需要帮助将 P12 证书转换为 JKS

Posted

技术标签:

【中文标题】需要帮助将 P12 证书转换为 JKS【英文标题】:Need help converting P12 certificate into JKS 【发布时间】:2013-04-21 02:02:16 【问题描述】:

我需要一些帮助,将我的 .P12 证书文件转换为 JKS 密钥库。我使用 Java 的 keytool 实用程序遵循了标准命令。但是,当我尝试使用生成的 JKS 文件通过 SOAPUI 访问 WS 端点时,我收到 403.7 错误 - 禁止:需要 SSL 证书。对同一端点使用带有 SOAPUI 的 P12 文件会产生成功的响应。 这是将 P12 密钥库导入 JKS 密钥库的标准命令 -

keytool -importkeystore -srckeystore src.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore target.jks

我也尝试使用 openssl 来转换 P12 -> PEM -> DER -> JKS:

openssl pkcs12 -in src.p12 -out src.pem -clcerts

(将 src.pem 编辑成它的两个复合部分,称为 src.key 和 src.cer)

openssl pkcs8 -topk8 -nocrypt -in src.key -out key.der -inform PEM -outform DER
openssl x509 -in src.cer -inform PEM -out cert.der -outform DER

(我运行了一个实用程序将两个密钥组合到 keystore.ImportKey 中)

keytool -importkeystore -srckeystore keystore.ImportKey -destkeystore target.JKS

同样没有骰子。

我有什么遗漏吗?

【问题讨论】:

【参考方案1】:

如果您有 Keytool 应用程序和 PKCS#12 文件,请启动单行命令:

keytool -importkeystore -srckeystore [MY_FILE.p12] -srcstoretype pkcs12
 -srcalias [ALIAS_SRC] -destkeystore [MY_KEYSTORE.jks]
 -deststoretype jks -deststorepass [PASSWORD_JKS] -destalias [ALIAS_DEST]

您需要修改这些参数:

MY_FILE.p12:表示要转换的 PKCS#12 文件(.p12 或 .pfx 扩展名)的路径。 MY_KEYSTORE.jks:要在其中存储证书的密钥库的路径。如果不存在,则会自动创建。 PASSWORD_JKS:将在密钥库打开时请求的密码。 ALIAS_SRC:名称与您在 PKCS#12 文件中的证书条目匹配,例如“tomcat”。

如果您要从生成 .PFX 文件的 Windows 服务器导出证书,则必须检索 Windows 创建的“别名”名称。为此,您可以执行以下命令:

keytool -v -list -storetype pkcs12 -keystore FILE_PFX

这里,“别名”字段表示您需要在命令行中使用的证书的存储名称。

ALIAS_DEST:与您在 JKS 密钥库中的证书条目匹配的名称,例如“tomcat”。

【讨论】:

【参考方案2】:

但他问如何将.p12转换为JKS,所以答案是:

keytool -importkeystore  -srckeystore mystore.p12 -destkeystore myotherstore.jks -srcstoretype PKCS12 -deststoretype jks -srcstorepass mystorepass -deststorepass myotherstorepass -srcalias myserverkey -destalias myotherserverkey -srckeypass mykeypass -destkeypass myotherkeypass

只需要使用这条线,对我有用。

【讨论】:

谢谢。万一有人没有像我这样的别名,命令会是:keytool -importkeystore -srckeystore keystore,jks -destkeystore keystore.jks -srcstoretype PKCS12 -deststoretype jks -deststorepass changeit 它只会询问你的源密码。【参考方案3】:

我很惊讶为什么这么长时间没有人回答这个问题。无论如何,将 p12 转换为 jks 的最简单方法是使用 Keytool。以下是您可能需要使用的命令:

keytool -importkeystore  -srckeystore mystore.jck -destkeystore myotherstore.jks -srcstoretype jceks
-deststoretype jks -srcstorepass mystorepass -deststorepass myotherstorepass -srcalias myserverkey
-destalias myotherserverkey -srckeypass mykeypass -destkeypass myotherkeypass

我相信您面临的问题可能是因为您没有提供 Keypass。请注意,保持 keypass 和 storepass 相同是一个好习惯,因为有时服务器无法区分 keypass 和 storepass。

【讨论】:

以上是关于需要帮助将 P12 证书转换为 JKS的主要内容,如果未能解决你的问题,请参考以下文章

将 .jks 转换为 p12

将 .cer 证书转换为 .jks

从jks证书中提取公钥和私钥(jks证书转pem证书)

将证书转换为 pfx 或 p12 文件格式

如何在 OpenSSL 中将 jks 文件转换为 p12 文件?

将 p12 APNS 证书转换为 base64 字符串