博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Charles抓包https
阅读量:5966 次
发布时间:2019-06-19

本文共 1171 字,大约阅读时间需要 3 分钟。

Charles抓包https

2018.05.08 10:46 字数 762 阅读 7800评论 3

抓取HTTPS请求包,对数据进行排查检验

1.安装Charles

2.电脑安装Charles证书

电脑安装证书

 

双击还是信任下吧

3.手机安装证书

手机安装证书

4.手机网页输入网址 下载证书并信任

手机证书下载网址

 

安装到手机上

注意:在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。

iOS11下需要手动信任已下载好的证书,方法如下:

设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.

iOS11下手动信任证书

5.开始抓包

Charles设置Proxy
Proxy -> SSL Proxying Settings...,如下图所示:

疑问1,如果设置成特定的域名发现还是抓不了包,不知道为什么

选择Proxy | Recording Settings,弹出Recording Settings设置选项卡,勾选include

 

只展示你想看见的域名结果

6.原理简析

如果是HTTP请求,因为数据本身并没加密所以请求内容和返回结果是直接展现出来的。
但HTTPS是对数据进行了加密处理的,如果不做任何应对是无法获取其中内容。所以Charles做的就是对客户端把自己伪装成服务器,对服务器把自己伪装成客户端:

  1. Charles拦截客户端的请求,伪装成客户端向服务器进行请求
  2. 服务器向“客户端”(实际上是Charles)返回服务器的CA证书
  3. Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)
  4. 客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
  5. Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)
  6. 服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
  7. Charles拦截服务器的响应,替换成自己的证书后发送给客户端

当然,如果用户不选择信任安装Charles的CA证书,Charles也无法获取请求内容。还有一种,如果客户端内置了本身的CA证书,这时如果Charles把自己的证书发送给客户端,客户端会发现与程序内的证书不一致,不予通过,此时Charles也是无法获取信息的。

参考

转载地址:http://vstax.baihongyu.com/

你可能感兴趣的文章
python---LineReceiver实现记录服务器
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
telnet :No route to host
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
Oracle 索引
查看>>
数据库复习
查看>>
unix 环境高级编程
查看>>
为数据库建立索引
查看>>
第二周作业-软件工作量的估计
查看>>
我的wordpress插件总结
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>
[Linux][Redis][05]Benchmark
查看>>
第一次作业-准备篇
查看>>
HDU1848 Fibonacci again and again
查看>>