Android https ssl证书配置(使用okhttp)

本文介绍使用okhttp时配置https证书的用法,关于证书的原理和SSL协议本文不做介绍,需要的同学自行查阅。https证书常见的错误用法是信任所有证书,https证书在移动应用中常见的问题是证书过期但客户端无法及时更新的问题。本文列举了几种配置方法,并做简单总结:

1、验证系统中信任的根证书(默认)

  • 不适合自颁发的证书(12306.cn)
  • 一般不会存在中间人劫持问题,原因如下:

    • Android 内置的 SSL 的实现是引入了Conscrypt 项目,而 HTTP(S)层则是使用的2.x的 OkHttp。而 SSL 层只负责校验证书的真假,对于所有基于SSL 的应用层协议,需要自己来校验证书实体的身份,因此 Android 默认的域名校验则由 OkHostnameVerifier 实现的,默认是校验域名的。如果使用其他网络库则需要check一下是否校验的域名。

    • WebView的默认校验证书规则也会校验域名,检查到如果网站部署的SSL证书不是浏览器受信任的根证书颁发机构,则会有安全警告。

    • 受信任的根证书颁发机构,在别人申请证书时会校验 域名所有权验证。

2、验证本地证书(certificate pinning),cer 和 pem 格式都可以

  • 本地证书打包在App内,无法及时更新,无法应对证书过期或吊销问题。
  • 如果是自颁发的证书,期限尽可能设置长点,如果是信任机构颁发的证书,则需要在过期前提前放置新证书,实现平滑过渡。
client = OkHttpClientUtil.getSSLClient(client,this,"12306.cer");

3、不验证任何证书

  • 存在中间人劫持问题
client = OkHttpClientUtil.getTrustAllSSLClient(client);

总结

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值