Java 如果我在HTTPS服务器上禁用SSLv2/SSLv3,Android连接将失败
在Android应用程序(Nexus 7上的Kitkat 4.4.4)中,我使用改装的REST库访问HTTPS服务器,我将其配置为只允许TLS,不允许SSL(以修复贵宾犬漏洞) 我的改装设置代码很简单Java 如果我在HTTPS服务器上禁用SSLv2/SSLv3,Android连接将失败,java,android,ssl,https,retrofit,Java,Android,Ssl,Https,Retrofit,在Android应用程序(Nexus 7上的Kitkat 4.4.4)中,我使用改装的REST库访问HTTPS服务器,我将其配置为只允许TLS,不允许SSL(以修复贵宾犬漏洞) 我的改装设置代码很简单 RetrofitInterface retrofitInterface = new RestAdapter.Builder() .setEndpoint(API.API_URL).build().create(RetrofitInterface.class); 我不做进一步的特定于SSL
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 我发现解决方案是使用改造开发人员提供的OkHttp客户端
因此,我猜改造中使用的默认HTTP客户端在SSL/TLS握手方面存在问题。这可能是客户端或服务器端的配置问题,仅凭这些细节很难判断。如果您提供服务器的名称(如果它是公共可访问的),或者提供数据包捕获(如果成功连接和不成功连接)以查看差异,则会更容易提供帮助。您还可以尝试根据[ssllabs](ssllabs.com/ssltest/analyze.html)检查服务器。@SteffenUllrich我找到了一种解决问题的方法,并将根据其他测试发布详细信息。您解决问题的方法有哪些详细信息?我还想禁用对SSLv2、SSL v3协议的支持,你能帮我禁用吗?OkHttp 2.5.0java.net.UnknownServiceException:找不到可接受的协议。对我来说=/