2016-10-14 7 views
0

У меня есть этот очень простой пример кода.получение handshake_failure с использованием HttpsURLConnection. Нужно заставить его работать с jdk1,7

 String https_url = "https://www.somesite.ca"; 
     URL url; 
     try { 
      url = new URL(https_url); 
      HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 

      System.out.println("****** Content of the URL ********"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); 

      String input; 

      while ((input = br.readLine()) != null) { 
       System.out.println(input); 
      } 
      br.close(); 


     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

он отлично работает на всех сайтах, к которым я обращаюсь, кроме одного. Это один сайт только начал неудачу за исключением

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) 
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1301) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
    at com.unitnet.utils.intouch.TestSSL.testIt(TestSSL.java:42) 
    at com.unitnet.utils.intouch.TestSSL.main(TestSSL.java:16) 

я могу заставить его работать, запустив с jdk1.8, но это на самом деле не вариант. Мне действительно нужно, чтобы заставить его работать с 1.7

Кто-нибудь есть какие-либо работы обходные, которые могут помочь мне

благодаря

ответ

-1

решение для выпуска позволяет TLS в JDK 1,7

jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1 

в файле jre/lib/security/java.security на сервере, и после этого сервер только принимает соединение TLS1.2 и отклоняет более низкие версии протокола безопасности. Это работает только с обновлением версии 7.7 и выше. for more

+0

Вы имеете в виду решение является * отключить * TLS 1.0 и 1.1? Неясно, что вы говорите. – EJP

0

Установка расширения криптографии Java (JCE) Неограниченная сила решила проблему для меня.

Источник: here