Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语;握手期间远程主机关闭连接”;使用Bittrex HTTP API_Java_Unirest - Fatal编程技术网

Java 爪哇语;握手期间远程主机关闭连接”;使用Bittrex HTTP API

Java 爪哇语;握手期间远程主机关闭连接”;使用Bittrex HTTP API,java,unirest,Java,Unirest,我在发出HTTP请求时突然遇到以下错误: Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSoc

我在发出HTTP请求时突然遇到以下错误:

Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:290)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:259)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:125)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:319)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:138)
... 24 more
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
... 41 more
它并不总是这样,它在一段时间内运行良好。然后,我使用不同的库,甚至是不同的IntelliJ项目进行测试,仍然存在相同的问题。我尝试过的事情:

  • 更改我正在使用的端点
  • 将TLS版本设置为TLSv1.2(我在发出浏览器请求时发现)
我可以通过浏览器和邮递员加载端点。我的代码(使用Unirest库):

我不知道是什么导致了这个问题,这非常令人沮丧。任何帮助都将不胜感激

编辑:更新到JDK10修复了该问题。有关更多信息,请参阅所选答案及其注释线程。

首先,启用:-Djavax.net.debug=all

将代码的标准输出重定向到一个文件,并检查握手时的错误

如果检查与或openssl一起使用的url:

nmap --script ssl-enum-ciphers -p <port> <host>
根据您的JDK版本,您可能需要安装JCE扩展和/或此密码


当然,您应该使用少量java代码打印出当前支持的密码。如果未列出ECDHE-ECDSA-AES128-GCM-SHA256,则这是您的问题

是的,我没有列出密码。我将在调试打开的情况下检查日志,同时如何添加该密码(如果这是正确的术语)?我想是的,您已经指定了正确的TLS版本,这两件事*是成功握手所必需的(*在早期JDK版本中,JCE扩展也是如此)如何安装/获取正确的密码?我已成功地使用和Oracle JDK 1.8.0_151(64位)连接,没有对当前JDK设置进行任何修改,也没有任何与SSL相关的JVM参数(SSL调试除外)。您使用的JDK版本是什么?更多信息:-通过这种方式,您可以发现java TLS_ECDHE_ECDSA_ECDSA_和_AES_128_GCM_SHA256中的ECDHE-ECDSA-AES128-GCM-SHA256在Java8中默认启用,不需要安装JCE。
nmap --script ssl-enum-ciphers -p <port> <host>
openssl s_client -connect <host>:<port>
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
Server public key is 256 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-ECDSA-AES128-GCM-SHA256