簡體   English   中英

TLS1.2 支持 Java 6

[英]TLS1.2 support with Java 6

我們有一個在嵌入式平台上運行的遺留應用程序,我們使用 Java 6 作為 JVM。 我們有來自需要 TLS1.2 支持的應用程序的 https 訪問權限。 我們使用的 JVM 不提供此功能。 如何實現對應用程序的 TLS1.2 支持?

我們可以通過使用Bouncy Castle庫來實現 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>
  • 將安全提供程序添加為 BC

     if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { Security.insertProviderAt(new BouncyCastleProvider(), 1); } // add provider only if it's not in the JVM if (Security.getProvider(BouncyCastleJsseProvider.PROVIDER_NAME) == null) { Security.insertProviderAt(new BouncyCastleJsseProvider(), 2); }

或者,您可以更新 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();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM