HttpClient falha com falha de handshake no Android 5.0 Lollipop

DefaultHttpClient no Android 5.0 Lollipop parece estar quebrado. Não é possível definir a conexão com alguns sites que foram definidos com sucesso por versões anteriores do Android.

Por exemplo, tento me conectar ahttps://uralsg.megafon.ru

//Create httpclient like in https://stackoverflow.com/questions/18523784/ssl-tls-protocols-and-cipher-suites-with-the-androidhttpclient
HttpClient client = new DefaultHttpClient(manager, params);
HttpGet httpGet = new HttpGet("https://uralsg.megafon.ru");
HttpResponse client = httpclient.execute(httpGet);

Este código funciona no Android 2.3-4.4, mas falha no Android 5.0 (dispositivos e emulador) com o erro Conexão fechado por pares. É claro que isso é compreensível, porque o Android 5.0 tenta conectar esse servidor antigo ao TLSv1.2 e cifras modernas e não os suporta.

Ok, usando o código de exemplo emProtocolos SSL / TLS e conjuntos de cifras com o AndroidHttpClient limitamos o protocolo e codificamos paraTLSv1 eSSL_RSA_WITH_RC4_128_MD5. Agora ele falha com um erro diferente:

javax.net.ssl.SSLHandshakeException: Handshake failed
caused by 
    error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac 
    (external/openssl/ssl/s3_pkt.c:1286 0x7f74c1ef16e0:0x00000003) 
    at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake

E é claro que esse código funciona sem problemas no Android 2.3-4.4.

Examinei o tráfego com o wireshark:

302 4002.147873000  192.168.156.30  83.149.32.13    TLSv1   138 Client Hello
303 4002.185362000  83.149.32.13    192.168.156.30  TLSv1   133 Server Hello
304 4002.186700000  83.149.32.13    192.168.156.30  TLSv1   1244    Certificate
305 4002.186701000  83.149.32.13    192.168.156.30  TLSv1   63  Server Hello Done
307 4002.188117000  192.168.156.30  83.149.32.13    TLSv1   364 Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
308 4002.240695000  83.149.32.13    192.168.156.30  TLSv1   61  Alert (Level: Fatal, Description: Bad Record MAC)

Você pode ver que a conexão foi estabelecida, mas o servidor foi alertado porque provavelmente não foi possível decodificar a mensagem de handshake criptografada.

Não consegui me conectar ahttps://uralsg.megafon.ru usando HttpClient no Android 5.0. O navegador de ações o conecta. O Android 2.3-4.4 conecta este site de qualquer forma, sem dificuldades.

Existe alguma maneira de possibilitar ao HttpClient conectar esses sites? Este é apenas um exemplo, tenho certeza de que há muitos servidores herdados que não puderam ser conectados pelo Android 5.0 e HttpClient.

questionAnswers(2)

yourAnswerToTheQuestion