我一直在尝试多种解决方案,在我的soap客户端(身份验证)中使用受密码保护的p12证书。我不能让它工作。谁能请我指出正确的方向。我的最新测试:
keytool -importkeystore -srckeystore mycert.p12 -destkeystore cert/cacerts -srcstoretype PKCS12 -deststoretype JKS -srcstorepass 123456789 -deststorepass changeit -srcalias 1 -destalias mycert
System.setProperty("javax.net.ssl.trustStore","cert/cacerts");
System.setProperty("javax.net.debug", "ssl");
结果:
致命,描述= certificate_unknown
由于
答案 0 :(得分:0)
您应首先查看difference between a keystore and a truststore。如果要使用PKCS#12文件进行客户端身份验证,则需要使用它作为密钥库。 (如果默认CA不能信任服务器证书,您可能还需要设置信任库属性,但这是一个不同的问题。)
您根本不需要将p12文件转换为JKS。
如果您的客户端使用系统属性初始化其SSL上下文(查看其文档),您应该能够通过将javax.net.ssl.keyStore
指向它来配置p12文件,将javax.net.ssl.keyStoreType
设置为{{1并正确设置PKCS12
。在大多数情况下,应在尝试任何SSL连接之前设置这些属性,因为它们只能读取一次。