android4.4 ssl版本查看,在Android 4.4中启用TLS 1.2
我使用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相关推荐
- android4.4 ssl版本查看,OkHttp在4.4及以下不支持TLS协议的解决方法
在做超理论坛app的过程中,遇到许多用户反馈在他们的手机上客户端不能访问网络,我问了他们的手机型号和Android系统版本,全部是5.0以下的,之后我自己运行API19(4.4)的Android模拟器 ...
- android tls加密,加密传输才是王道!谷歌在 Android P 上默认启用 TLS
原标题:加密传输才是王道!谷歌在 Android P 上默认启用 TLS 上周四谷歌表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用 ...
- win10版本查看_想知道电脑中安装的win10版本号,用这3招就对了,一键查看
自从微软在Windows 10中更改了发布模型后,很多用户就对找出他们在电脑上安装的Windows 10版本感兴趣.大家可能都已经知道,微软不会再发布Windows的主要版本,而是会不断发布更新,这让 ...
- 在任何版本的Vista或Windows 7中启用DreamScene
Windows DreamScene was a utility available for Vista Ultimate that allowed users to set video as des ...
- appRTC android studio,如何在android studio模拟器中启用webgl?
您必须在第36版上更新您的webview控件. 更好的是使用Android的铬框架. "的Android 4.4(API级别19)推出的WebView的新版本是基于铬" 公共查看o ...
- 红米如何查看手机android版本号,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 大家好 最近部分米粉关心的红米手机4高配版适配 Android 7.0,这个建议我们很早注意到了,并且内部做了充分的沟通和协调.最新的结论是红米手机4高配 ...
- Android——查看Android Studio版本支持的Android版本问题
android studio各版本支持的android 版本是有规定的.比如如果使用的是android 2.3.3的话,那么现在如果想使用android p版本的sdk tool的话,可能存在问题,同 ...
- android ui设计当前不同版本的变化,Android 4.0设计规范 十大界面改变
1. 导航栏 (详见模式PATTERNS>导航Navigation) 由之前的物理按键导航(返回.菜单.搜索.主页)变成了嵌入屏幕的虚拟按键(返回.主页.最近任务). 左侧为早期有4个物理按键的 ...
- 好玩的java代码 安卓_各种版本的 玩Android 来啦!
原标题:各种版本的 玩Android 来啦! 一直说给大家整理一波各个版本的 wanandroid 客户端,好了,来啦! 由于优秀客户端实在太多,本文只能按照技术栈的不同,选出几个具有代表性的项目. ...
最新文章
- Microsoft Hyper-V Server 2012开启虚拟化-虚拟机管理
- 聊聊 TCP 长连接和心跳那些事
- 利用Travis CI 让你的github项目持续构建(Node.js为例)
- Win7无法远程桌面
- 蓝桥杯-出现次数最多的整数(java)
- nginx指定配置文件启动_【第1717期】Nginx入门指南
- python多线程实现方式_python中实现多线程有几种方式?
- python加入中小学课程_通知:中小学将新增一门课!对2008-2013年出生的孩子影响最大!...
- 问题与事务跟踪系统jira中的版本管理
- 清华同方计算机教程,清华同方电脑u盘重装系统win10教程
- Android Design 1: Back键和Up键在App导航中的表现
- python批量查询IP物理地址输出到Exel
- HTTP协议格式详解
- 中信银行总行信息科技部的面试(校招)
- 【电脑运用及修理】固态硬盘跟机械硬盘有什么区别?
- Google Analytics SEO 实时 网站 访问量 统计
- 【C++ 第五章 个人银行账户管理程序案例】
- zznuoj-1003
- 7200 笔记本硬盘 444
- 【ESD专题】3.ESD防护器件(TVS管的原理和选型)