【发布时间】:2014-05-21 21:12:20
【问题描述】:
我正在使用 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();
【问题讨论】:
-
@AlexandreSantos,为什么建议忽略证书错误?证书的存在是有原因的。
-
阅读帖子:由于这只是一个测试环境,我希望能够忽略或接受所有通过 https 的证书。
-
@AlexandreSantos,很公平,但即使在测试环境中,最好使用实际证书进行测试。至少,不安全的代码不会错误地进入生产环境(很容易忘记删除隐藏错误的代码,否则这些错误对于在生产环境中标记很重要)。