我一直在尝试多种解决方案以在我的 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
谢谢
最佳答案
您应该首先查看 difference between a keystore and a truststore .如果您想使用 PKCS#12 文件进行客户端身份验证,则需要将其用作 keystore 。 (如果默认 CA 不信任服务器证书,您可能还需要设置信任库属性,但这是另一个问题。)
您根本不需要将 p12 文件转换为 JKS。
如果您的客户端使用系统属性来初始化其 SSL 上下文(查看其文档),您应该能够通过将 javax.net.ssl.keyStore
指向它来配置您的 p12 文件,设置javax.net.ssl.keyStoreType
为 PKCS12
并正确设置 javax.net.ssl.keyStorePassword
。在大多数情况下,应在尝试任何 SSL 连接之前设置这些属性,因为它们只会被读取一次。
关于java - 在java中使用证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356657/