https抓包的实现
(一)首先,电脑得装个证书
(1)先去官网下载证书,不然会报“无法找到证书”错误(官网注明说该证书在v3.10上会失效,我安装能正常工作...)
官网地址:https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/
(2)进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,会打开证书,安装进去
(3)当安装后,可能你看不到在哪里,在右上角的搜索中 输入 cha 则会显示出来,你看到上面是 此根证书不被信任
(4)在证书上右键 - 显示详情 ,展开信任 选择 始终信任,然后点击左上角的关闭,系统会弹出授权提示框,授权同意修改,回到列表,稍等,证书就刷新了
(二)然后,移动设备上安装证书
这里以ios为例 在浏览器中输入http://charlesproxy.com/getssl,然后会弹出一个界面,让输入证书名字,直接输入charles就ok啦,安装成功后会提示证书安装成功
注:亲测直接在模拟器浏览器打开网址可以安装成功证书,通过网址[http://www.charlesproxy.com/assets/legacy-ssl/charles.crt]下载,手动安装会报“无法安装证书”错误
(三)最后,Charles添加SSL Proxying
(1)进入Proxy-》SSL Proxying Settings
(2)勾选“Enable SSL Proxying”,并点击下方的Add
(3)在弹出的“Edit Location”中,输入Host和Port都为“*”(看提示这样配置可以抓到所有https的包),然后进行添加
(4)确保模拟器/手机将电脑的IP地址设置为代理,端口号为8888,
(四)最近iPhone系统更新到ios 10.3后,在公司里用Charles抓包竟然出现了一些问题,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:Mac上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.这里Charles的相关使用不做介绍,不会使用的请参考本文结尾处唐巧大大的博文.
相关环境
Charles 4.0.2
iPhone 6s iOS 10.3.1
原因
设置->通用->描述文件->charles proxy custom root certificate
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
解决
设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.
信任证书
后记
问题虽小,但是很有必要普及一下.这个设置证书信任的开关界面隐藏的很深,是iOS 10.3之后出现的(貌似是,至少之前我没见过).这个问题因此也只有在iOS 10.3的设备上才会出现,真是太意外了!因此作为iOS开发者,更新手机系统时,了解一下系统更新的相关内容也变得很有必要.
网友评论