gpt4 book ai didi

java - Java 6 上的 TLS 1.2

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:29 25 4
gpt4 key购买 nike

我有一个在 java 6 上运行的遗留应用程序。但是,由于某些安全因素,我们需要升级到 TLS 1.2。为此,我尝试了以下代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;

public class TlsCheck {

/**
* test whether this client can connect to TLS v1.2 or not
*/

public static boolean isSuccessfulTLS12connection(){
try{
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

URL url = new URL("https://tlstest.paypal.com");
HttpsURLConnection httpsConnection = (HttpsURLConnection)url.openConnection();
httpsConnection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(httpsConnection.getInputStream()));
StringBuilder body = new StringBuilder();
while(reader.ready()){
body.append(reader.readLine());
}
httpsConnection.disconnect();
System.out.println("The body is::"+body.toString());
if(body.toString().equals("PayPal_Connection_OK")){
return true;
}
}catch(NoSuchAlgorithmException ne){
ne.printStackTrace();
}catch(UnknownHostException ue){
ue.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}catch(KeyManagementException ke){
ke.printStackTrace();
}
return false;
}

public static void main(String args[]){
try{
SSLParameters sslParams = SSLContext.getDefault().getSupportedSSLParameters();
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
sslParams.setProtocols(new String[] { "TLSv1.2"});
String[] protocols = sslParams.getProtocols();
System.out.println("The Supported Protocols are::"+Arrays.asList(protocols));

}catch(NoSuchAlgorithmException ne){
ne.printStackTrace();
}

if(isSuccessfulTLS12connection()){
System.out.println("The connection to TLS v1.2 endpoint is succesful");
}else{
System.out.println("The connection to TLS v1.2 failed!");
}
}

但是我得到以下错误:

  The Supported Protocols are::[TLSv1.2]
javax.net.ssl.SSLException: Received fatal alert: protocol_version
The connection to TLS v1.2 failed!
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
at TlsCheck.isSuccessfulTLS12connection(TlsCheck.java:30)
at TlsCheck.main(TlsCheck.java:65)

谁能提出一个比设置属性更好的方法?我也试过设置 JVM 参数,但没有成功!

最佳答案

真正的解决办法?升级到 Java 1.7 或更高版本。继续运行 Java 1.6 Update 45 并将其连接到互联网在专业上是鲁莽的。

有多鲁莽?非常。

因为甲骨文发布了a critical patch update for Java 1.6 Update 45fixed over 40 security vulnerabilities 四年多以前

在那些四年前固定的:

  • CVE-2013-2462 此漏洞的成功攻击可能导致未经授权的操作系统接管,包括任意代码执行。
  • CVE-2013-2463 易于利用的漏洞允许通过多种协议(protocol)成功进行未经身份验证的网络攻击。成功攻击此漏洞可能导致未经授权的操作系统接管,包括任意代码执行。
  • CVE-2013-2464 易于利用的漏洞允许通过多种协议(protocol)成功进行未经身份验证的网络攻击。成功攻击此漏洞可能导致未经授权的操作系统接管,包括任意代码执行。
  • CVE-2013-2465 易于利用的漏洞允许通过多种协议(protocol)成功进行未经身份验证的网络攻击。成功攻击此漏洞可能导致未经授权的操作系统接管,包括任意代码执行。
  • CVE-2013-2466 易于利用的漏洞允许通过多种协议(protocol)成功进行未经身份验证的网络攻击。成功攻击此漏洞可能导致未经授权的操作系统接管,包括任意代码执行。
  • CVE-2013-2468 易于利用的漏洞允许通过多种协议(protocol)成功进行未经身份验证的网络攻击。成功攻击此漏洞可能导致未经授权的操作系统接管,包括任意代码执行。

还有 六个 个漏洞评级为 10.0 - 这意味着它是一个容易可利用的远程漏洞。

这只是 Oracle 四年前在 Java 1.6 Update 45 中实际修复的关键安全漏洞的列表。还有更多未在该补丁中修复的问题仍然存在。

而且您还没有修复任何

重申一下:那些漏洞 - and a whole lot more - 在 Java 1.6 Update 45 中仍然存在。

再次声明:继续使用 Java 1.6 Update 45 并将其连接到互联网是鲁莽的。 Java 1.6 Update 45 有至少 25(!!!) 已知可远程利用的安全漏洞,CVE 分数为 9.3 或更高。

关于java - Java 6 上的 TLS 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45932799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com