Java 6对TLS1.2的支持

Java 6对TLS1.2的支持,java,ssl,https,bouncycastle,tls1.2,Java,Ssl,Https,Bouncycastle,Tls1.2,我们有一个运行在嵌入式平台上的遗留应用程序,在这个平台上我们使用Java6作为JVM。我们可以从需要TLS1.2支持的应用程序访问https。我们正在使用的JVM没有提供这一点。如何实现对应用程序的TLS1.2支持?我们可以通过使用库来实现TLS1.2支持 下面是详细的解决方案 将适当的BC库添加到项目中 Maven依赖 <dependency> <groupId>org.bouncycastle</groupId>

我们有一个运行在嵌入式平台上的遗留应用程序,在这个平台上我们使用Java6作为JVM。我们可以从需要TLS1.2支持的应用程序访问https。我们正在使用的JVM没有提供这一点。如何实现对应用程序的TLS1.2支持?

我们可以通过使用库来实现TLS1.2支持

下面是详细的解决方案

  • 将适当的BC库添加到项目中
Maven依赖

     <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15to18</artifactId>
            <version>1.64</version>
    </dependency>
    <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bctls-jdk15to18</artifactId>
            <version>1.64</version>
    </dependency>
或者,您可以更新JRE/lib/security/java.security

security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
security.provider.3=sun.security.provider.Sun
security.provider.4=sun.security.rsa.SunRsaSign
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=com.sun.crypto.provider.SunJCE
security.provider.7=sun.security.jgss.SunProvider
security.provider.8=com.sun.security.sasl.Provider
BC库需要位于顶部(1和2)

  • 使用TLS1.2初始化SSL上下文

    SSLContext tls = SSLContext.getInstance("TLSv1.2");
    tls.init(null, null, null);
    SSLContext.setDefault(tls);
    
测试

     HttpsURLConnection urlConnection = null;

    try {

        URL url = new URL("https://www.nist.gov/");
        urlConnection = (HttpsURLConnection) url.openConnection();

        String data = IOUtils.toString(urlConnection.getInputStream(), "UTF-8");
        System.out.println(data);
        
    } catch (IOException ex) {
        ex.printStackTrace();
        try {
            if (urlConnection != null) {
                code = ((HttpURLConnection) urlConnection).getResponseCode();
                message = ((HttpURLConnection) urlConnection).getResponseMessage();
            } else {
                message = ex.toString();
            }
        } catch (IOException ex2) {
            message = ex2.toString();
        }

        System.out.println("Response : " + message);
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }
     HttpsURLConnection urlConnection = null;

    try {

        URL url = new URL("https://www.nist.gov/");
        urlConnection = (HttpsURLConnection) url.openConnection();

        String data = IOUtils.toString(urlConnection.getInputStream(), "UTF-8");
        System.out.println(data);
        
    } catch (IOException ex) {
        ex.printStackTrace();
        try {
            if (urlConnection != null) {
                code = ((HttpURLConnection) urlConnection).getResponseCode();
                message = ((HttpURLConnection) urlConnection).getResponseMessage();
            } else {
                message = ex.toString();
            }
        } catch (IOException ex2) {
            message = ex2.toString();
        }

        System.out.println("Response : " + message);
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }