Java 带有SSL客户端身份验证的Resteasy客户端不起作用
我有p12客户端证书。我的主机具有SSL证书,该证书由RapidSSL签署,并添加了用于客户端身份验证的p12证书。我使用Resteasy客户端访问此主机。下面我用来连接的代码:Java 带有SSL客户端身份验证的Resteasy客户端不起作用,java,authentication,ssl,curl,https,Java,Authentication,Ssl,Curl,Https,我有p12客户端证书。我的主机具有SSL证书,该证书由RapidSSL签署,并添加了用于客户端身份验证的p12证书。我使用Resteasy客户端访问此主机。下面我用来连接的代码: ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(classLoader.getResou
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(classLoader.getResourceAsStream("my_cert.p12"), keyPass.toCharArray());
SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial(keyStore, "my_pass".toCharArray())
.build();
ResteasyClientBuilder clientBuilder = (ResteasyClientBuilder) ResteasyClientBuilder.newBuilder();
clientBuilder.sslContext(sslContext);
Client client = clientBuilder.build();
WebTarget webTarget = client.target("https://client_auth.somehost.com/wrong/path");
Response response = webTarget.request().get();
Assert.assertEquals(404, response.getStatus());
没有例外,没有其他错误。对于任何URL,它只返回403
为了检查我的cert.p12是否正确,我已尝试使用curl连接
curl: (60) SSL certificate problem: self signed certificate in certificate chain
HTTP/1.1 404 Not Found
所以,这意味着我的证书没问题。那么为什么它不能从java代码中工作呢
Java版本“1.8.0_31”
Java(TM)SE运行时环境(build 1.8.0_31-b13)
Java HotSpot(TM)64位服务器虚拟机(构建25.31-b07,混合模式)
更新
我将代码重写为java原生SSL,得到了完全相同的结果。
此外,我还发现了一些信息,即CentOS上基于apache和openSSL的主机