人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
lsp-charles微博(lsp关注的微博)
iOS 10.3下解决Charles抓包ssl证书信任问题
最近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的根证书,并且设置了始终信任,然后手机上也登录了 安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.这里Charles的相关使用不做介绍,不会使用的请参考本文结尾处唐巧大大的博文.
(使用浏览器扫码进入在线客服窗口)
复制联系方式
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
设置-通用-关于本机-证书信任设置- 找到charles proxy custom root certificate然后信任该证书即可.
问题虽小,但是很有必要普及一下.这个设置证书信任的开关界面隐藏的很深,是iOS 10.3之后出现的(貌似是,至少之前我没见过).这个问题因此也只有在iOS 10.3的设备上才会出现,真是太意外了!因此作为iOS开发者,更新手机系统时,了解一下系统更新的相关内容也变得很有必要.
Charles 从入门到精通 - 唐巧的技术博客
TRUSTING CUSTOM ROOT CERTIFICATES ON IOS 10.3

解决Charles抓包ssl证书信任问题
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
设置-通用-关于本机-证书信任设置- 找到charles proxy custom root certificate然后信任该证书即可.
charles抓包显示乱码解决方法
【问题现象】
在抓https或者http2.0协议请求时,Request和Response显示乱码了:
【解决办法】
第一步:点击 【工具栏--Proxy--SSL Proxying Settings...】
第二步:配置请求的域名和端口号,*表示任意
再重新抓包,Request/Response显示正常:
注意:若是抓取app,此法还是乱码则去检查app是否进行了服务器校验了客户端(双向证书校验)
Charles设置代理之后,为什么电脑和手机都不能上网?
造成这种问题的原因就是charles等代理工具也拦截了电脑网页的请求,但是使用的是charles代理工具的证书,导致浏览器无法验证此网页的证书,进而导致了报错。
解决方法:我们只需要将charles的证书添加到电脑的信任证书中即可。
进入Charles的Help中,选择SSL Proxying,然后点击Install Charles Root Certificate。
此时我们的Charles证书是不被系统信任的,所以访问网站每回都会报证书问题,然后我们点击安装证书。
可以选择证书的安装位置,我选择的是本地计算机,所有用户都可以用,或者为了安全,也可以选择只给当前用户安装,那么别的windows用户就没有被安装此证书;
然后为证书选择存储位置,这里必须手动选择存储位置,否则自动选择出来的证书位置仍然是不被信任的。
然后点击浏览,我们手动指定证书的存储位置为“受信任的根证书颁发机构”。
然后点击确定,完成,此时再次进入安装证书的步骤,我们就发现Charles证书已经被系统信任。
其他解决方案:
1、火狐里面的选项-常规-最底下有个网络代理,点击设置后,进入设置窗口,选择手动配置代理,http代理是127.0.0.1,端口是8888,下面的“为所有协议”这个前面不打钩,下面的三个代理为空,三个端口是0,选择“SOCKS-v5”;
2、在谷歌上下载一个扩展插件“Proxy-SwitchyOmega_v2.4.6.crx”,下载后拖到谷歌的扩展程序中,安装好后,点击选项;
3、点击proxy,右边配置,代理协议是http,代理服务器是127.0.0.1,代理端口是8888;
4、点击auto switch,默认有两个条件,保留了一个条件,条件类型:网址通配符,条件设置:*://自己的域名地址/js/*,情景模式:选的proxy;
5、在谷歌浏览器顶部,最左边,会有个选项的按钮,点开后是下拉菜单,然后选择auto switch,图标就变成圆形了;
6、这样配置的话,就相当于会行程两层的代理,一层是谷歌浏览器,如果有百度的东西,那么就直接是浏览器和百度进行请求了,不会走charles代理,其次charles配置的代理文件。
如何在抓包工具charles中设置response的结果为utf-
Charles(查理斯) Response中文乱码:在infoplist 中 的vmoption 添加-Dfileencoding=UTF-8 直接上图。 Charles 可以抓https协议的网络包,新浪微博客户端api网络调用直接边透明。如何在抓包工具charles中设置response的结果为utf-

