双向SSL客户端使用自签名证书

3

我需要访问一个要求双向SSL的Web服务,我的客户端(以及他们的服务器)都有自签名证书。

我只有以下代码:

System.setProperty("javax.net.ssl.keyStore", "path/myClient.key");
System.setProperty("javax.net.ssl.keyStorePassword", "pass");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "path/myClient.truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "pass");
System.setProperty("com.sun.net.ssl.dhKeyExchangeFix", "true");

我从这里复制了TrustModifier,以便接受自签名证书:http://java.dzone.com/articles/ignoring-self-signed

但是,我仍然无法将整个过程集成到HttpClient中以成功连接。

需要帮助吗?


如果您的存储中有证书,则不应使用TrustModifier。TrustModifier只会禁用证书检查。请描述您收到的异常/错误消息。 - kan
如果您的客户端证书是自签名的,您还需要更改服务器上的信任设置。与其放宽信任设置,通常最好将自签名证书明确导入到相应的信任存储中(否则,使用SSL就没有什么意义了)。 - Bruno
1个回答

1

你的服务器也需要信任客户端的证书,以确保握手在服务器端成功。将客户端的证书导入到服务器的信任存储中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接