无法验证证书时出现 NoHttpResponseException

Gui*_*les 5 java ssl https certificate httpclient

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

当我尝试 cURL 或 Wget 到同一个网络服务器时,我只能通过使用-k--no-check-certificate(分别)来正确完成,这让我认为这是与 SSL 证书相关的问题。我已将 SSLContext 添加到我的 HttpClient (代码如下),但它没有效果。

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();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪如下所示:

信息:处理对 {s}-> https://server.com:443的请求时捕获 I/O 异常(org.apache.http.NoHttpResponseException) :目标服务器无法响应 2017 年 6 月 30 日 4:20:53 PM org.apache.http.impl.execchain.RetryExec 执行信息:重试请求到 {s}-> https://server.com:443 异常:org.apache.http.NoHttpResponseException:server.com:443 未能响应在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141) 在 org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) 在 org.apache.http.impl .io.AbstractMessageParser.parse(AbstractMessageParser.java:259)在org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)在org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java) :165)在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)

有人遇到过这样的问题吗?

谢谢您的帮助,