当前位置: 首页 > 知识库问答 >
问题:

引起的接收:javax.net.ssl.SSLHandshake异常:远程主机在握手过程中关闭连接

邴越彬
2023-03-14

我得到javax.net.ssl.SSLHandshakeExc0019:远程主机在握手异常关闭连接,当我尝试做一个Web服务的Https获取

Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:220)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:139)
    at com.cl.fwk.services.http.impl.WebServiceImpl.get(WebServiceImpl.java:241)
    ... 28 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:482)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
    ... 46 more

我的HTTP连接器配置:

   Connector connector = new Connector(Http11NioProtocol.class.getName());
   Http11NioProtocol protocol = (Http11NioProtocol) 
   connector.getProtocolHandler();
   protocol.setKeystoreFile("./Tests/Properties/keystore_local.ks");
   protocol.setKeystorePass("changeit");
   protocol.setSSLEnabled(true);
   protocol.setSslProtocol("TLS"); // TLSv1
   protocol.setClientAuth("true");
   protocol.setMaxThreads(200);
   protocol.setSecure(true);
   connector.setPort(443);
   protocol.setConnectionTimeout(30000);
   tomcat.getService().addConnector(connector);

无论如何,我可以对我的代码做些什么来解决这个问题吗?以下是完整的错误:

main, WRITE: TLSv1 Handshake, length = 48
main, received EOFException: error
main, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
%% Invalidated:  [Session-2, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
main, SEND TLSv1 ALERT:  fatal, description = handshake_failure
main, WRITE: TLSv1 Alert, length = 32
main, called closeSocket()

共有3个答案

竺勇
2023-03-14

你可以做两件事:你试图访问的url可能没有经过CA认证的证书,所以要求证书,或者你可以在cacerts(java运行时)中导入证书,然后尝试访问,否则第二:你可以禁用信任库(信任所有证书)从安全角度来看,这显然是不推荐的。

你可以参考这里

陆俭
2023-03-14

尝试更改协议。将SLS协议(“TLS”)设置为“TLSv1.1”或“TLSv1.2”

楚意
2023-03-14

您正在使用TLSv1,但主机只接受TLSv1.1和TLSv1.2,那么您必须Java以下指令更改协议:

协议setProperty(“https.protocols”、“TLSv1.1”);

 类似资料:
  • 我们为特定的IP地址配置了一个大型F5负载平衡器虚拟服务器,它将传入的https请求重定向到多个Windows服务器,在这些服务器上可以生成响应。 我正在使用SoapUI测试通过大F5中虚拟服务器的IP地址对这些windows服务器的访问。 使用由组织生成的服务器和客户机证书,我们在该组织中也进行了此设置,并通过SoapUI发送请求,我得到了预期的响应。 业务要求要求由Thawte签署商业证书。

  • SSLHandShakeException:尝试发布到以下URL时,在握手过程中发生远程主机关闭连接异常: https://testapi.title365.com/keystoneB2b/ordersservice.aspx 谁能帮帮忙吗?

  • 感谢您抽出时间阅读我的问题-我正在使用EclipseIDE。我希望Jsoup连接https url-https://www.icegate.gov.in/使用 但它在线程“main”javax中给出了错误,而当我对其他https(如linkedin)使用相同的代码时,它就工作了。。。我不知道如何解决这个问题。 我获得了该网站的证书,并安装在我的jre/lib/security文件夹中,但它对我也没

  • 我试图连接到需要显式FTP在TLS的FTP。我正试图从我的本地机器上做这件事。 下面是我使用的代码 当我跑的时候,我得到下面的异常 下面是我从Java CommandListener获得的日志 下面是我尝试使用FileZilla连接时的日志。它连接良好,我可以传输文件。但是当我尝试使用Java时,它没有连接 你们能帮忙吗? 亲切的问候乔恩

  • 我正在尝试连接到SOAPendpoint。 使用上面的方法,我不断得到下面的错误 java.lang.Thread.run(未知来源)[na: 1.8。0_191]原因:com.sun.xml.messaging.saaj.SOAPExceptionImpl:消息发送失败com.sun.xml.messaging.saaj.client.p2p。HttpSOAPConnection.post(Ht

  • 论坛上充斥着这个问题,但我找不到解决办法。我尝试连接WS,但没有成功。我试图更新cacerts文件,但没有效果。 日志是: 谢谢你的帮助