2015-10-26 2 views
3

Я использую OkHttp как клиент в Модификации. Я не могу ударить по определенному URL-адресу https. Этот сервер поддерживает TLS только 1.0 и следующие шифры TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_RC4_128_MD5Retrofit OkHttp SSLHandshakeException

Вот как я инстанцировании мой OkHttpClient:

OkHttpClient client = new OkHttpClient(); 

    try { 
     // Create a trust manager that does not validate certificate chains 
     final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { 
      @Override 
      public void checkClientTrusted(
        java.security.cert.X509Certificate[] chain, 
        String authType) throws CertificateException { 
      } 

      @Override 
      public void checkServerTrusted(
        java.security.cert.X509Certificate[] chain, 
        String authType) throws CertificateException { 
      } 

      @Override 
      public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
       return null; 
      } 
     }}; 

     // Install the all-trusting trust manager 
     final SSLContext sslContext = SSLContext.getInstance("TLSv1"); 
     sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); 

     // Create an ssl socket factory with our all-trusting manager 
     final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); 
     client.setSslSocketFactory(sslSocketFactory); 

     client.setHostnameVerifier(new HostnameVerifier() { 
      @Override 
      public boolean verify(String hostname, SSLSession session) { 
       return true; 
      } 
     }); 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 


    return client; 
} 

И мое приложение продолжает бросать это исключение:

javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x9742f000: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:770 0xab9fcc4d:0x00000000)

ответ

3

OkHttp больше не поддерживает RC4 в своей конфигурации по умолчанию, так как OkHttp v2.3 (release notes). Вы можете использовать ConnectionSpec (javadoc), чтобы включить его, ConnectionSpecTest.java (source code) показывает некоторые примеры.

+0

'supportTlsExtensions (true)' был ключевым. Вы спасли меня много времени, спасибо! –

Смежные вопросы