我需要一些帮助我转换证书.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
和similiarly没有骰子。
是否有什么我失踪?
如果您有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文件中的证书项,“雄猫”为例。
如果你将出口从Windows服务器生成证书.PFX
文件,你必须找回Windows创建的“别名”名称。 要做到这一点,你可以执行以下命令:
keytool -v -list -storetype pkcs12 -keystore FILE_PFX
在那里,“别名”字段表示你需要在命令行中使用证书的存储名称。
-
ALIAS_DEST
:名称,将匹配在JKS密钥库的证书项,“雄猫”为例。
但他问怎么的.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
只是不得不用这条线,我的作品。
我很奇怪为什么没有人回答了这个问题这么久。 反正到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用于为相同的,因为有时服务器无法关键通过与Storepass用于区分。