Java HttpsURLConnection and TLS 1.2

前端 未结 3 404
旧时难觅i
旧时难觅i 2020-12-05 00:35

I read in an article that HttpsURLConnection will transparently negotiate the SSL connection.

The official document says:

This c

相关标签:
3条回答
  • 2020-12-05 00:49
    private static javax.net.ssl.SSLSocketFactory getFactorySimple() 
            throws Exception {
        SSLContext context = SSLContext.getInstance("TLSv1.2");`
    
        context.init(null, null, null);
    
        return context.getSocketFactory();
    
    }
    
    String loginurl ="some url";
    HttpsURLConnection connection = null;
    URL url = new URL(loginURL);
    
    connection = (HttpsURLConnection) url.openConnection();
    
    javax.net.ssl.SSLSocketFactory sslSocketFactory =getFactorySimple();
    
    connection.setSSLSocketFactory(sslSocketFactory);
    

    The above code can be used to enable tls 1.1 or tls 1.2 in java 1.7

    0 讨论(0)
  • 2020-12-05 00:51

    You can also set TLS 1.2 protocol with the JDK 1.7. By default JDK 1.7 will set it to 1.0.

    SSLContext sc = SSLContext.getInstance("TLSv1.2"); //$NON-NLS-1$
    sc.init(null, null, new java.security.SecureRandom());
    HttpsURLConnection con = (HttpsURLConnection) httpsURL.openConnection();
    con.setSSLSocketFactory(sc.getSocketFactory());
    
    0 讨论(0)
  • 2020-12-05 01:04

    You will have to create an SSLContext to set the Protocoll:

    in Java 1.8:

     SSLContext sc = SSLContext.getInstance("TLSv1.2");
     // Init the SSLContext with a TrustManager[] and SecureRandom()
     sc.init(null, trustCerts, new java.security.SecureRandom()); 
    

    in Java 1.7:

     SSLContext sc = SSLContext.getInstance("TLSv1");
     // Init the SSLContext with a TrustManager[] and SecureRandom()
     sc.init(null, trustCerts, new java.security.SecureRandom());
    

    then you just have to set the SSLContext to the HttpsURLConnection:

    httpsCon.setSSLSocketFactory(sc.getSocketFactory());
    

    That should do the Trick.

    0 讨论(0)
提交回复
热议问题