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

使用HTTPPost连接到第三方URL时出现javax.net.ssl.SSLHandShakeException

戚兴思
2023-03-14

这是一个独立的多线程核心java应用程序,它使用httpclient-4.0-beta1.jar进行连接。

当尝试连接到客户端url时出现以下异常,我需要发送请求。

   *********************
SSLContext we used 
    SSLContext context = SSLContext.getInstance(TLSv1_2);
 HttpParams params = new BasicHttpParams();
 ConnManagerParams.setMaxConnectionsPerRoute(params, new ConnPerRouteBean(900));
 ConnManagerParams.setMaxTotalConnections(params, 1800);
 HttpConnectionParams.setConnectionTimeout(params, 30); // Connection timeout when requesting a connection.
HttpConnectionParams.setSoTimeout(params, 30); // Connection level timeout for waiting on data if Method level not provided.
HttpConnectionParams.setLinger(params, 0); //Disabled - How long a socket lingers after close() is called.
HttpConnectionParams.setStaleCheckingEnabled(params, false); // Disabled - Check the connec tion before attempting to use.
HttpConnectionParams.setTcpNoDelay(params, false); // Disabled - Enables Nagles Algorithm for performance.

HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); // Http Protocol Version to use.
HttpProtocolParams.setUseExpectContinue(params, false); 
HttpProtocolParams.setContentCharset(params, "ISO-8859-1"); // Body Content Character Set.
HttpProtocolParams.setHttpElementCharset(params, "ISO-8859-1"); // Header Content Character Set. 
HttpClientParams.setAuthenticating(params, false);
ConnManagerParams.setTimeout(params, 30);

HttpClientParams.setRedirecting(params, false); // Disabled - Allow Redirects.
HttpClientParams.setCookiePolicy(params, CookiePolicy.BEST_MATCH);

 SchemeRegistry httpSecureSchemeRegistry = new SchemeRegistry();    
 httpSecureSchemeRegistry.register(new Scheme("https",SSLSocketFactory.getSocketFactory(),443));
 ClientConnectionManager cmHttpSecure = new ThreadSafeClientConnManager(params, httpSecureSchemeRegistry);
 this.httpSecureClient = new DefaultHttpClient(cmHttpSecure, params);

 HttpPost httpPost = new HttpPost(clientURL);
 this.httpSecureClient.execute(httpPost);

我使用下面的配置通过shell脚本运行这个,一开始我尝试用代理执行,但之后我也配置了代理,但仍然存在同样的问题。任何在thsi方面的帮助都将非常感谢。

$JAVA_HOME/java -Xms128m -Xmx1024m -cp $CLASSPATH -Djavax.net.ssl.trustStore=/java/jdk1.7.0_49/jre/lib/security/cacerts -Djavax.net.ssl.keyStorePassword=changeit -Djavax.http.proxyHost=proxyAddress -Djavax.http.port=8080  > ./out.log 2>&1 &

共有1个答案

邓星光
2023-03-14

SSLHandShakeException:握手期间远程主机关闭连接

这几乎可以是任何东西,但通常与验证服务器证书无关。此错误的一些常见原因:

  • 服务器需要SNI,但客户端没有使用SNI。特别是Android SDK附带的Apache HTTP客户端不支持SNI。
  • 服务器需要客户端不发送或服务器不接受的客户端证书。
  • 密码不匹配,协议版本...

要调试问题,请尝试与其他客户机联系服务器,尝试与客户机联系其他服务器,使用密码协议版本,查看数据包捕获等。还请查看服务器端的日志。不幸的是,SSL问题很难调试,因为没有得到很多有用的错误消息。

 类似资料:
  • 我正在使用SunPKCS11连接到HSM设备。我有一些运行完美的单元测试(实际上他们会进行一些签名和验证),但是,当我将应用程序部署到tomcat或jetty时,我会得到这个异常(这个异常是在jetty中部署期间引发的,tomcat的异常是相似的): 下面是我如何实例化SunPKCS11的: 只是为了添加一些细节,我在windows server 2012上使用了64位java8。 更新1:我刚刚

  • 我的一位同事实现了访问api所需的授权代码流,我们将access和refresh_tokens基本存储在数据库中以访问这个第三方api。但是感觉不对,我也找不到任何最佳的做法,有谁能帮我吗?

  • 问题内容: 我非常了解我想对组件进行条件渲染的react-router-dom。如果未登录use,则将他重定向到某个第三方URL 例如,下面的代码看起来很整洁,可以正常工作 让我们在上面的示例中说,如果我想重定向 https://www.google.com, 该怎么做? 如果我写 如何重定向到第三方网站? 问题答案: 您可以将标记用于外部网址, 但您也可以提供这样的组件:

  • 我有这个演示设置: > 节点.js在端口 8001 上运行的 WebSocket 服务器 #1(使用“socket.io”) 节点。js WebSocket服务器#2(使用'socket.io')在端口8002上运行 在端口 8000 上运行的 nginx websocket 反向代理: node.js客户端(使用socket.io客户端,而不是浏览器JavaScript客户端)尝试连接到服务器#

  • 我目前正在通过以下教程学习如何通过mongodb API使用Azure的cosmosdb:https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-mongoDB-react 本教程的最终repo在这里:https://github.com/azure-samples/react-cosmosdb,但到目前为止,我只是在第5

  • 我正在尝试使用solrj CloudSolrClient连接到solrCloud,但出现了错误。 用于直接调用单个solr节点,现在切换到solrcloud。我已经尝试了各种不同的url格式,如在线文档中指定的。 使用以下zkHost字符串时,我会发现各种错误。 主持人:2181 2019-08-21 15:53:17错误o. a. c. c.C.[.[.[.[.a. d. n. s.超文本传输协