如果我在HTTPS服务器上禁用SSLv2 / SSLv3,Android连接将失败

时间:2014-11-13 20:02:34

标签: java android ssl https retrofit

在Android应用程序(Nexus 7上的Kitkat 4.4.4)中,我使用Retrofit REST库来访问我配置为仅允许TLS但没有SSL(以修复Poodle漏洞)的HTTPS服务器。

My Retrofit设置代码很简单

RetrofitInterface retrofitInterface = new RestAdapter.Builder()
    .setEndpoint(API.API_URL).build().create(RetrofitInterface.class);

我没有进一步的SSL特定配置。

如果我在服务器配置中禁用SSLv2 / SSLv3,则REST资源请求将失败,并显示以下错误消息:

failure retrofit.RetrofitError: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0x69978800: Failure in SSL library, usually a protocol error
    error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure (external/openssl/ssl/s3_pkt.c:1256 0x683cddf8:0x00000003)

当我将HTTPS服务器配置为允许SSLv2 / SSLv3时,问题就会消失。

我是否需要其他配置来强制Android HTTP库使用TLS而不是SSL?

1 个答案:

答案 0 :(得分:1)

我发现解决方案是使用Retrofit开发人员提供的OkHttp客户端。

所以我猜Retrofit中使用的默认HTTP客户端存在SSL / TLS握手问题。