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

客户端应用程序中针对同一请求不时更改TLS版本,并且由于发生SSLHandshakeException

梁明辉
2023-03-14

我的客户端应用程序运行在java 1.7.0\u 79版本的tomcat服务器上。它将从一些第三方服务器应用程序获取数据。但由于以下异常,时间到时间服务器连接失败。

javax.net.ssl.SSLHandshakeException:远程主机在sun.security.ssl.SSLSocketImpl.read记录(SSLSocketImpl.java:953)sun.security.ssl.SSLSocketImpl.perform初始握手时关闭连接(SSLSocketImpl.java:1332)

大多数服务器应用程序都支持TLSv1.2,因此我的客户端应用程序代码如下所示。当分析数据包时,发现TLSv1.1用于客户端的失败连接。是否有可能使用以下代码获得除TLSv1.2以外的其他TLS版本?此外,此代码由客户端应用程序中的多个线程执行。请给出建议。

TrustManager[] trustAllCerts = new TrustManager[]{
     new X509TrustManager() {
          ...
}};

SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
SSLContext.setDefault(sc);
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

URL mUrl = new URL(url);
URLConnection ucon = mUrl.openConnection();
HttpURLConnection con = (HttpURLConnection) ucon;
...
responseBody = con.getInputStream();

共有1个答案

孟晨朗
2023-03-14

使用-Djavax.net.debug=ssl: all获取详细的SSL连接日志。这将有助于获取有关错误的更多详细信息。

 类似资料: