首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TLS1.2对Java 6的支持

TLS1.2对Java 6的支持
EN

Stack Overflow用户
提问于 2020-11-26 07:59:30
回答 1查看 191关注 0票数 1

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 07:59:30

利用弹跳城堡库可以实现对TLS1.2的支持。

以下是详细的解决方案

  • 向项目中添加适当的BC库

Maven依赖

代码语言:javascript
复制
     <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 如果(Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) ==为null) {Security.insertProviderAt(新的BouncyCastleProvider(),1);} //添加提供程序仅当它不在JVM中时,如果(Security.getProvider(BouncyCastleJsseProvider.PROVIDER_NAME) ==为null) {Security.insertProviderAt(新的BouncyCastleJsseProvider(),2);}

或者,您可以更新JRE/lib/security/java.security

代码语言:javascript
复制
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);SSLContext.setDefault(tls);

测试

代码语言:javascript
复制
     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();
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65018035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档