在java中使用证书

时间:2013-01-16 10:51:01

标签: java ssl certificate

我一直在尝试多种解决方案,在我的soap客户端(身份验证)中使用受密码保护的p12证书。我不能让它工作。谁能请我指出正确的方向。我的最新测试:

  1. keytool -importkeystore -srckeystore mycert.p12 -destkeystore cert/cacerts -srcstoretype PKCS12 -deststoretype JKS -srcstorepass 123456789 -deststorepass changeit -srcalias 1 -destalias mycert
  2. System.setProperty("javax.net.ssl.trustStore","cert/cacerts"); System.setProperty("javax.net.debug", "ssl");
  3. 结果:

    致命,描述= certificate_unknown

    由于

1 个答案:

答案 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连接之前设置这些属性,因为它们只能读取一次。