证书无法验证时的NoHttpResponseException

时间:2017-06-30 19:24:03

标签: java ssl https certificate httpclient

我正在尝试使用CloseableHttpClient通过HTTPS连接到Web服务器。但是,每当我尝试打开连接时,客户端都会抛出NoHttpResponseException。

当我尝试cURL或Wget到同一个网络服务器时,我只能使用-k--no-check-certificate(分别)正确地执行此操作,这让我觉得这是一个与SSL相关的问题证书。我已经为我的HttpClient添加了一个SSLContext(下面的代码),但它没有效果。

SSLContextBuilder sslContextBuilder = SSLContexts.custom();
sslContextBuilder.setSecureRandom(new java.security.SecureRandom());
sslContextBuilder.loadTrustMaterial(null, new TrustStrategy() {
    public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
        return true;
    }
});
SSLContext sslContext = sslContextBuilder.build();

stacktrace看起来像这样:

  

INFO:处理{s}请求时遇到的I / O异常(org.apache.http.NoHttpResponseException) - > https://server.com:443:目标服务器无法响应   2017年6月30日下午4:20:53 org.apache.http.impl.execchain.RetryExec执行   信息:正在重试{s} - > https://server.com:443的请求   例外:   org.apache.http.NoHttpResponseException:server.com:443无法响应       at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)       at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)       在org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)       at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)       在org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165)       at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)       在org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)       在org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)       在org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)       在org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)       在org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)       在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)       在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)

有没有人遇到过这类问题?

感谢您的帮助,

0 个答案:

没有答案