一、使用Charles
我们使用Charles可以完成网络抓包和更改请求/响应数据,具体的使用方法在这篇博客 Charles 如何抓取https数据包
- 按照上面博客安装Charles之后,下载Charles的根证书到MAC电脑安装并设置为信任。
- 按照提示给手机设置网络代理并在手机上安装好Charles的证书。
- 配置SSL Proxy Settings, 需要访问的https的路径。
- 以上设置正确后我们在手机APP上的网络请求就可以抓到了。
Charles抓包原理

二、根据域名是否配置SSL Proxy Settings时抓包的差异判断是否实现了证书验证
配置SSL Proxy Settings里面可以对Host勾选和取消勾选并点击OK

在取消勾选的情况下(或者未给自己的域名设置SSL Proxy Settings),请求数据跟响应数据都是乱码的。
以下是对域名配置了SSL Proxy Settings的抓包情况
1. 如果是APP里面使用了证书验证的请求方式(包含使用证书里公钥比对的情况)
在勾选了SSL Proxy Settings时request数据为红叉,也就是抓包失败,如图:

2.如果是APP里面没有使用证书验证的情况下
数据是可以被抓包的,如图:

所以APP即使使用的是https,如果没有使用证书验证的请求方式也是不安全的!
三、https 证书验证的请求方式在iOS端如何实现
查看我另一篇博客AFNetworking里面的HTTPS安全策略实现原理
相关阅读
iOS中HTTPS的安全连接问题
网友评论