安卓 https 证书校验和绕过

吕元江,2019年1月加入去哪儿网,现负责app的分析和设备指纹反爬事项,对app脱壳,java/nativec层加解密算法分析还原有丰富经验。

1. 背景

在分析 app 协议时经常碰到由于证书校验而导致无法正常抓取 https 协议的情况,本文主要介绍证书校验检测的时机和原理,以及如何绕过检测和绕过的原理。安全防范方面,开发者又该如何应对以及如何检测,同破解方进行对抗。

1.1 在安卓上实现 https 方式的方法有哪些

A)Apache 的 HttpClient 类

B)HttpsURLConnection 类

C)后续将以第三方库 OkHttp 为例(或其他第三方库 Xutils,HttpClientAndroidLib)

1.2 各自的证书校验方式?

1.根据 app 内置证书 KeyStore 生成 TrustManager 验证

2.自定义 SSLSocketFactory(org.apache.http.conn.ssl.SSLSocketFactory)实现 TrustManager 验证策略(httpClient)

3.自定义SSLSocketFactory(javax.net.ssl.SSLSocketFactory)实现TrustManager 验证策略(HttpsURLConnection,OkHttp3)

4.自定义的 HostnameVerifier 和 X509TrustManager 实现验证

5.第三方库中的验证,如 OkHttp3 中的 CertificatePinner(证书锁定)

6.WebView 加载 Https 页面时证书校验出错,停止加载

下图为目前比较常见的实现 https 类的各自证书验证的方式:

下图为 JSSE 的参考手册提供的与描述证书验证相关的一些类之间的关系示意图。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值