java - ClientRequest 接受所有证书

标签 java ssl

我正在使用 ClientRequest 库执行“GET”请求,但我遇到了证书错误:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397) [jsse.jar:1.7.0_40]
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.execute(ApacheHttpClient4Executor.java:182) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]

由于这只是一个测试环境,我希望能够忽略或接受所有通过 https 的证书。 (我知道这违背了 ssl 的目的。)非常感谢任何指向正确方向的指示!

    ClientRequest request = new ClientRequest(someURL.toString());
    ClientResponse<SomeClass> response = null;
    response = request.get(SomeClass.class);
    response.getEntity();

最佳答案

由于您使用的是 Apache HTTP 客户端,默认情况下证书不受信任,此异常的原因与“javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed”在 SSLSocket 的大多数其他用途中(参见 this answer for details ):本质上,这表明您的证书不受信任。

不是忽略错误(通过添加特定代码来绕过任何证书验证,当您接近发布截止日期时您可能会忘记这些代码),而是将您的自定义证书导入您的信任库。例如,创建与 JRE 捆绑在一起的 cacerts 文件的本地副本,使用 keytool 导入您的自定义证书,并指向 javax.net.ssl。当您启动 JVM 时,trustStore 系统属性(和相关属性)到该文件。

关于java - ClientRequest 接受所有证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793877/

相关文章:

java - Spring Security不通过Spring Session EnableRedisHttpSession重用身份验证数据

c# - 如何在 C# 中从 TCP 服务器发送\接收文件流?

ssl - TLS 中主 key 和 session key 的区别

wcf - 通过 SSL 的 REST WCF 服务

ssl - 访问 Kubelet API Microk8s

c# - SslStream 身份验证失败

获取 asana json 数据并解析它的 Java 实用程序

java - 如何模拟一个预期返回 HashMap 的方法?

java - 根据字符串的长度分割字符串

java - 仅当我使用 jlink 组装应用程序后运行应用程序时,Flyway 才无法在类路径中找到迁移