在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?
答案 0 :(得分:1)
我发现解决方案是使用Retrofit开发人员提供的OkHttp客户端。
所以我猜Retrofit中使用的默认HTTP客户端存在SSL / TLS握手问题。