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

时间:2013-04-26 19:52:30

标签: security ssl openssl pkcs#12 jks

我需要一些帮助将我的.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

并且同样没有骰子。

我有什么遗失的吗?

3 个答案:

答案 0 :(得分:16)

如果您有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

那里,"别名" field表示您需要在命令行中使用的证书的存储名称。

  • ALIAS_DEST:与JKS密钥库中的证书条目匹配的名称," tomcat"例如。

答案 1 :(得分: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

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

答案 2 :(得分:1)

我很惊讶为什么没有人这么久回答这个问题。无论如何,将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。