我使用Retrofit和OkHttp3来发出请求.我知道在

Android 4.4 TLS 1.1和TLS 1.2中没有启用defult.所以我想尝试启用它们.但到目前为止,我没有成功.我读到这可能是android工作室模拟器的一个问题,但是我无法在带有andoroid 4.4 rigthnow的真实设备上进行测试

这是我到目前为止所做的:

private S createService(Class serviceClass) {

Retrofit retrofit = builder.client(getNewHttpClient()).build();

return retrofit.create(serviceClass);

}

private OkHttpClient getNewHttpClient() {

OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()

.connectTimeout(10, TimeUnit.SECONDS)

.writeTimeout(10, TimeUnit.SECONDS)

.readTimeout(0, TimeUnit.MINUTES); // Disable timeouts for read

return enableTls12OnPreLollipop(clientBuilder).build();

}

public static OkHttpClient.Builder enableTls12OnPreLollipop(OkHttpClient.Builder client) {

if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {

try {

client.sslSocketFactory(new TLSSocketFactory());

ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)

.tlsVersions(TlsVersion.TLS_1_2)

.build();

List specs = new ArrayList<>();

specs.add(cs);

specs.add(ConnectionSpec.COMPATIBLE_TLS);

specs.add(ConnectionSpec.CLEARTEXT);

client.connectionSpecs(specs);

} catch (Exception exc) {

Log.e("OkHttpClientProvider", "Error while enabling TLS 1.2", exc);

}

}

return client;

}

TLSSocketFactory CLASS

public class TLSSocketFactory extends SSLSocketFactory {

private SSLSocketFactory delegate;

public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {

SSLContext context = SSLContext.getInstance("TLS");

context.init(null, null, null);

delegate = context.getSocketFactory();

}

@Override

public String[] getDefaultCipherSuites() {

return delegate.getDefaultCipherSuites();

}

@Override

public String[] getSupportedCipherSuites() {

return delegate.getSupportedCipherSuites();

}

@Override

public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {

return enableTLSOnSocket(delegate.createSocket(s, host, port, autoClose));

}

@Override

public Socket createSocket(String host, int port) throws IOException, UnknownHostException {

return enableTLSOnSocket(delegate.createSocket(host, port));

}

@Override

public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException {

return enableTLSOnSocket(delegate.createSocket(host, port, localHost, localPort));

}

@Override

public Socket createSocket(InetAddress host, int port) throws IOException {

return enableTLSOnSocket(delegate.createSocket(host, port));

}

@Override

public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {

return enableTLSOnSocket(delegate.createSocket(address, port, localAddress, localPort));

}

private Socket enableTLSOnSocket(Socket socket) {

if(socket != null && (socket instanceof SSLSocket)) {

((SSLSocket)socket).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});

}

return socket;

}

}

我试过this但没有用.

我的错误是:javax.net.ssl.SSLProtocolException:SSL握手中止:ssl = 0xb829bae0:SSL库失败,通常是协议错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败(external / openssl / ssl / s23_clnt. c:741 0x8d9e3990:0x00000000)

android4.4 ssl版本查看,在Android 4.4中启用TLS 1.2相关推荐

  1. android4.4 ssl版本查看,OkHttp在4.4及以下不支持TLS协议的解决方法

    在做超理论坛app的过程中,遇到许多用户反馈在他们的手机上客户端不能访问网络,我问了他们的手机型号和Android系统版本,全部是5.0以下的,之后我自己运行API19(4.4)的Android模拟器 ...

  2. android tls加密,加密传输才是王道!谷歌在 Android P 上默认启用 TLS

    原标题:加密传输才是王道!谷歌在 Android P 上默认启用 TLS 上周四谷歌表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用 ...

  3. win10版本查看_想知道电脑中安装的win10版本号,用这3招就对了,一键查看

    自从微软在Windows 10中更改了发布模型后,很多用户就对找出他们在电脑上安装的Windows 10版本感兴趣.大家可能都已经知道,微软不会再发布Windows的主要版本,而是会不断发布更新,这让 ...

  4. 在任何版本的Vista或Windows 7中启用DreamScene

    Windows DreamScene was a utility available for Vista Ultimate that allowed users to set video as des ...

  5. appRTC android studio,如何在android studio模拟器中启用webgl?

    您必须在第36版上更新您的webview控件. 更好的是使用Android的铬框架. "的Android 4.4(API级别19)推出的WebView的新版本是基于铬" 公共查看o ...

  6. 红米如何查看手机android版本号,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 大家好 最近部分米粉关心的红米手机4高配版适配 Android 7.0,这个建议我们很早注意到了,并且内部做了充分的沟通和协调.最新的结论是红米手机4高配 ...

  7. Android——查看Android Studio版本支持的Android版本问题

    android studio各版本支持的android 版本是有规定的.比如如果使用的是android 2.3.3的话,那么现在如果想使用android p版本的sdk tool的话,可能存在问题,同 ...

  8. android ui设计当前不同版本的变化,Android 4.0设计规范 十大界面改变

    1. 导航栏 (详见模式PATTERNS>导航Navigation) 由之前的物理按键导航(返回.菜单.搜索.主页)变成了嵌入屏幕的虚拟按键(返回.主页.最近任务). 左侧为早期有4个物理按键的 ...

  9. 好玩的java代码 安卓_各种版本的 玩Android 来啦!

    原标题:各种版本的 玩Android 来啦! 一直说给大家整理一波各个版本的 wanandroid 客户端,好了,来啦! 由于优秀客户端实在太多,本文只能按照技术栈的不同,选出几个具有代表性的项目. ...

最新文章

  1. Microsoft Hyper-V Server 2012开启虚拟化-虚拟机管理
  2. 聊聊 TCP 长连接和心跳那些事
  3. 利用Travis CI 让你的github项目持续构建(Node.js为例)
  4. Win7无法远程桌面
  5. 蓝桥杯-出现次数最多的整数(java)
  6. nginx指定配置文件启动_【第1717期】Nginx入门指南
  7. python多线程实现方式_python中实现多线程有几种方式?
  8. python加入中小学课程_通知:中小学将新增一门课!对2008-2013年出生的孩子影响最大!...
  9. 问题与事务跟踪系统jira中的版本管理
  10. 清华同方计算机教程,清华同方电脑u盘重装系统win10教程
  11. Android Design 1: Back键和Up键在App导航中的表现
  12. python批量查询IP物理地址输出到Exel
  13. HTTP协议格式详解
  14. 中信银行总行信息科技部的面试(校招)
  15. 【电脑运用及修理】固态硬盘跟机械硬盘有什么区别?
  16. Google Analytics SEO 实时 网站 访问量 统计
  17. 【C++ 第五章 个人银行账户管理程序案例】
  18. zznuoj-1003
  19. 7200 笔记本硬盘 444
  20. 【ESD专题】3.ESD防护器件(TVS管的原理和选型)

热门文章

  1. 乖离水机器人攻略_乖离性百万亚瑟王超弩风机器人攻略 打法详解
  2. pm2 linux 离线安装
  3. 比小汤山还大1/3的火神山启用了,武汉的床位够用了吗?| DT数说
  4. javaScript提取双花括号内字符串
  5. 布隆过滤器以及应用介绍
  6. 王炜:如何以公共交通为导向引导城市交通结构优化?
  7. 手工定制Linux系统
  8. 用php编写的简单个人主页,完美起航-使用HTML制作一个简单的个人主页
  9. MongoDB Mtools工具集之mloginfo使用手册
  10. MyCat:第二章:Mycat前世今生,java同步锁原理