Android https ssl证书配置(使用okhttp)
来源:互联网 发布:asp webservice json 编辑:程序博客网 时间:2024/05/22 11:37
本文介绍使用okhttp时配置https证书的用法,关于证书的原理和SSL协议本文不做介绍,需要的同学自行查阅。https证书常见的错误用法是信任所有证书,https证书在移动应用中常见的问题是证书过期但客户端无法及时更新的问题。本文列举了几种配置方法,并做简单总结:
1、验证系统中信任的根证书(默认)
- 不适合自颁发的证书(12306.cn)
- 也会存在中间人劫持问题,只要有从信任机构申请的证书就可以作为中间人劫持其他人。
2、验证本地证书(certificate pinning),cer 和 pem 格式都可以
- 本地证书打包在App内,无法及时更新,无法应对证书过期或吊销问题。
- 如果是自颁发的证书,期限尽可能设置长点,如果是信任机构颁发的证书,则需要在过期前提前放置新证书,实现平滑过渡。
client = OkHttpClientUtil.getSSLClient(client,this,"12306.cer");
3、不验证任何证书
- 存在中间人劫持问题
client = OkHttpClientUtil.getTrustAllSSLClient(client);
4、验证系统中信任的根证书 和 证书域名
- 不适合自颁发的证书(12306.cn)
- 也会存在中间人劫持问题,需要随便找一家信任机构申请相同域名证书,才能劫持,这个几率不大。
OkHttpClient.Builder builder = client.newBuilder(); builder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { //verify your hostname return true; } });
5、验证系统中信任的根证书 和 本地证书但忽略过期时间
- 不适合自颁发的证书(12306.cn)
- 方法是验证系统中信任的根证书、本地证书和服务器证书的发布方是否一致、本地证书和服务器证书的主体是否一致
client = OkHttpClientUtil.getSSLClientIgnoreExpire(client, this, "toutiao.pem");
总结
- 1、使用自颁发的长期限的本地证书(方法2)最安全省事。
- 2、如果证书是信任机构颁发的,又不想处理证书过期问题,可以使用方法5
- 3、代码:https://github.com/MasonLiuChn/TestOkhttpSSL
阅读全文
0 0
- Android https ssl证书配置(使用okhttp)
- Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用
- okHttp 使用HTTPS证书
- 使用OkHttp访问ssl(https)网络
- Nginx配置SSL证书部署HTTPS网站(颁发证书)
- tomcat8 https ssl证书配置
- Tomcat配置 https SSL证书
- Android使用OkHttp访问自签名证书的Https接口
- nginx使用ssl模块配置HTTPS支持(自签证书)
- Nginx配置SSL证书部署HTTPS网站(介绍)
- https详解(ssl证书)
- Android安全开发之正确使用Https(内含OkHttp、HttpUrlConnection配置https方式)
- okhttp使用https忽略证书验证
- okhttp使用https忽略证书验证
- 使用okhttp忽略https的证书认证
- Nginx 配置 SSL 证书 + HTTPS 站点小记
- Nginx + https + 免费SSL证书配置指南
- Nginx 配置 SSL 证书 + HTTPS 站点
- iOS 对字符串进行MD5处理
- Codeforces Round #430 (Div. 2) B. Gleb And Pizza
- 设计模式
- eclipse下搭建shell脚本编辑器--安装开发shell的eclipse插件shelled
- zookeeper和dubbo的关系
- Android https ssl证书配置(使用okhttp)
- KindEditor编辑器使用添加分页功能
- sql语句中使用#跟$的区别(MyBatis中)
- Hive留存率统计
- Laravel Debugbar文档中文翻译
- 转载】dbms_stats 导入导出表统计信息
- python豆瓣源地址
- 第二十九篇:JAVA本地接口(JNI)
- C++内存管理1(转)