Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我在HTTPS服务器上禁用SSLv2/SSLv3,Android连接将失败_Java_Android_Ssl_Https_Retrofit - Fatal编程技术网

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

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

在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的配置

如果我在服务器配置中不允许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:找不到可接受的协议。对我来说=/