Java 具有自签名证书的双向SSL客户端

Java 具有自签名证书的双向SSL客户端,java,ssl,httpclient,Java,Ssl,Httpclient,我需要访问需要双向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.setProper

我需要访问需要双向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以接受自签名证书:

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


有什么帮助吗?

您的服务器还需要信任客户端的证书,才能在服务器端成功握手。将客户端的证书导入服务器的信任库。

如果您的信任库中有证书,则不得使用信任修饰符。TrustModifier只是禁用证书检查。请描述您收到的异常/错误消息。如果您的客户端证书是自签名的,您还需要更改服务器上的信任设置。与其放松信任设置,通常最好将自签名证书显式导入到各自的信任存储中(否则,使用SSL没有什么意义)。