31

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

同样没有骰子。

有什么我想念的吗?

4

3 回答 3

38

如果您有 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”。
于 2017-02-05T15:30:37.900 回答
7

但他问如何将.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

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

于 2016-09-08T08:13:57.180 回答
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。

于 2015-05-24T05:23:00.177 回答