26 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-上篇( 三 )


super.onReceivedSslError(view, handler, error)这样是为了忽略掉SSL证书错误,因为开启代理后网络会变得不安全,证书会报错误,webview检测到证书错误之后就不请求任何数据 。注释是为了忽略掉父类的处理,默认执行下去 。
6.1警告这样的配置操作是敏感且危险的,只能用于测试环境方便抓包,线上包一定注意要恢复配置 。
6.2拓展通过查找资料,还有一个方法,通过重载WebViewClient的onReceivedSslError()函数并在其中执行handler.proceed(),即可忽略SSL证书错误,继续加载页面,代码如下:
WebView webview = (WebView) findViewById(R.id.webview);webview.setWebViewClient(new WebViewClient() {@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {// 不要调用super.onReceivedSslError,因为其包含了一条 handler.cancel(),第一次访问时无法加载,第二次以后可以加载// super.onReceivedSslError(view, handler, error);// 忽略SSL证书错误,继续加载页面handler.proceed();}}7.小结Android证书分为“用户证书”和“系统证书”两种,在设置->安全->"查看安全证书"列表中,可以看到“系统”和“用户”两个列表 。用户通过浏览器下载安装或者通过WLAN高级设置安装的证书均为用户证书 。
关于证书的两个注意事项
(1)安装用户证书必须要设置开机密码,而且设置后就不能取消,除非先删掉所有的用户证书 。如果安装为系统证书就不需要设置开机密码,自动化操作时更方便 。(2)Android 7以上版本APP默认不信任用户证书,只信任系统证书,安装为用户证书,对APP的HTTPS抓包会失败 。安装为全局证书才能被所有APP信任,方可进行HTTPS抓包 。
默认情况下,针对 Android 7.0+ (API level 24+) 的应用不再信任用户或管理员添加的CA证书来进行安全连接 。(之前我们其实是将安全证书安装到安卓手机上作为用户信任安全证书,新版本如果APP开启了设置我们的代理请求会被认为是不安全的 。)Android的系统证书的存储位置是/system/etc/security/cacerts,证书文件必须是PEM格式,而且文件命名必须符合系统证书规范 。
好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢你耐心地阅读!!!

经验总结扩展阅读