charles 安装 ssl_最全面的解决Charles手机抓包的证书问题(步骤非常详细)

源自公众号文章: 彻底解决Charles手机抓包的证书问题

简介: Charles 抓包是日常开发当中经常会用到的技术, 在 Android 6 之前, 手机系统既信任系统内置的证书, 也信任用户自己安装的证书, 但是在 Android 7 之后, 却发生了变化, 手机系统只信任系统内置的根证书. 当然了, 这是为了手机系统更安全. 但是这样以来, 原来抓包的方法就失效了. 本文主要全面讲解 IOS 和 Android 系统如何去配置根证书. 彻底解决抓包所遇到的最头疼的问题.

Charles 抓包前的准备工作

  1. 下载 charles, 官网的地址: https://www.charlesproxy.com
  2. 配置要抓包的主机和端口, Proxy > SSL Proxying Settings > SSL Proxying, 启用 Enable SSL Proxying, 同时在 Include 当中添加 Location, 如下图所示(这是个通配符配置, 一般状况下, 这个这个已经能够满足绝大数抓包的需求了).

d7fc86fb63f757f6542b06b8693f063a.png
  1. 配置代理服务器的端口, Proxy > Proxying Settings, 设置端口(我喜欢使用8888, 当然了, 各位自己按照喜好设置):

d9434d283b8f17bb131e1ad7e12d721e.png
一般情况下, 上述配置已经满足了大部分抓包的需求, 当然还需要更详细的内容, 请参考其他教程内容.

Charles 在 Android 7.0(及其以上的版本) 上安装证书方法

  1. 下载应用 VMOS, 官网地址是: http://www.vmos.cn.
注: VMOS 应用就是一台 Android 虚拟机, 目前好像只支持 32 位系统, 大部分应用都可以使用, 如果有的应用明确需要 64位系统, 可以使用 VMOS Pro, 当然了这个 root 功能是收费的了.


2. 导出 Charles 的证书, 这个证书是抓包的时候安装在手机上的证书. 方法有两种:

方法一:

  • 在 Android 手机上配置代理, 主机是你安装 Charles 的主机的 IP (注意: Android 手机需要和安装的Charles的电脑在同一网段下), 端口号是 8888. (这个可以自行百度各种手机的配置方法.)
  • 在 Android 手机的浏览器上输入网址chls.pro/ssl, 然后下载文件.
  • 将下载好的文件拷贝到电脑上, 进行如下的操作:
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.crt
charles-proxy-ssl-proxying-certificate.crt 是拷贝的证书文件

上面输出的结果类似于:

faf57fe3
-----BEGIN CERTIFICATE-----
MIIFMDCCBBigAwIBAgIGAXWqowQPMA0GCSqGSIb3DQEBCwUAMIGbMSwwKgYDVQQD
....
aXDrm30UE6+dWdQ3n0ePVLNcHV+ZrIqwka94M/t8HavZpm4y
-----END CERTIFICATE-----

然后将 charles-proxy-ssl-proxying-certificate.crt 文件重命名faf57fe3.0 (faf57fe3需要根据你自己生成 的结果进行调整)

方法二:

  • Charles 进入 Help > SSL Proxying > Save Charles Root Certificate, 导出 pem 格式证书.
  • 然后进行如下的操作:
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem
charles-proxy-ssl-proxying-certificate.pem 是导出的证书文件

上面输出的结果类似于:

faf57fe3
-----BEGIN CERTIFICATE-----
MIIFMDCCBBigAwIBAgIGAXWqowQPMA0GCSqGSIb3DQEBCwUAMIGbMSwwKgYDVQQD
....
aXDrm30UE6+dWdQ3n0ePVLNcHV+ZrIqwka94M/t8HavZpm4y
-----END CERTIFICATE-----

然后将 charles-proxy-ssl-proxying-certificate.pem 文件重命名faf57fe3.0(faf57fe3需要根据你自己生成 的结果进行调整)
3. 拷贝文件, 将生成好的证书文件拷贝到 /system/etc/security/cacerts/ 目录下, 并且修改文件权限:

# adb 连接到 vmos 虚拟机
adb connect 192.168.50.100:5666# 拷贝文件
adb push faf57fe3.0 /system/etc/security/cacerts/# 修改文件权限
adb shell
cd /system/etc/security/cacerts/
chmod 644 faf57fe3.0
192.168.50.100:5666VMOS 虚拟机的 adb 连接. 在进入 VMOS app后, 进入 设置 > 其他设置 当中, 按照下图所示进行设置, 然后重启 VMOS app 即可生效:

32260379b899b40132842e106b6806be.png

4. 设置全局代理. 到此为止, 你已经成功了一半, 接下来就需要设置 VMOS 的全局代理地址为当前的 Charles 的代理服务器的地址. 设置操作如下:

adb connect 192.168.50.182:5666 # adb 连接到 vmos 虚拟机(如果之前已经连接过可以省略)adb shell settings put global http_proxy 192.168.50.14:8888 # 设置 vmos 的全局代理
192.168.50.14:8888 是我的 Charles 的主机IP地址, 这个需要根据自己的情况修改. 这一步很重要的, 如果没有这一步操作, 前面的准备工作都白搭了!


5. 到处为止, 大家就可以愉快的抓包了. 要么去 VMOS 的应用商店下载应用, 要么自己把应用传递到 VMOS 当中. 这个大家自己去探索吧, 是非常简单的操作.


charles 在 iphone 上安装证书方法

  • Charles 当中点击 Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser

b5a4fa34be47acc7e2e25bf7c23ac5dd.png
  • 点击 iPhone 手机的 Safari 或者 Safari浏览器, 输入网址 http://chls.pro/ssl, 点击下载 charles 的证书.
  • 进入 iPhone 手机的 Settings > General > Profile(s) 或者 设置 > 通用 > 描述文件:

b88010934d83552b60aa30eb9f6ba373.png
  • 点击 Install 或者 安装, 安装 chls 证书.

20a7f19f76bb362e2d3b3b7d63b68dc6.png
  • 进入 iPhone 手机的 Settings > General > About > Certificate Trust Settings 或者 设置 > 通用 > 关于本机 > 证书信任设置, 启用已经安装好的 Charles Proxy CA 证书.

53386181339df476a3fe7a48cddaede4.png

各位看官, 本篇文章怎么样? 如果喜欢了, 就请点个赞吧, 关注一下, 再次感谢您的观看 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle报错:ORA-00054: 资源正忙,要求指定 NOWAIT

ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源: --首先得到被锁对象的session_idselect session_id from v$locked_object; --通过上面得到的session_id去取得v$session的sid和serial#,然后对该进程进行终止。--SELECT sid, serial#, username, o…

ARM中ROM,RAM,FLASH区别

RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存&…

excel 2007 vba与宏完全剖析_Excel宏VBA小技巧系列 | 分段加合

写在前面的话 知识产权算是一个盛产数据的行业。专利啊商标啊著作啊,都有著录项目。我们常说的专利分析、产业导航、企业导航、产业预警、竞争情报、技术综述、知识产权评议等等,常规操作之一就要先处理著录项目数据,然后再进行不同角度的分…

SecureCRT:保存输出日志的方法

处理地址: http://blog.sina.com.cn/s/blog_64c1dd210101gzgz.html 或者: http://renchen.blog.51cto.com/4531967/1195862 重点在与设定文档的文件名称,里面有说明。 http://renchen.blog.51cto.com/4531967/1195862转载于:https://www.cnbl…

redhat虚拟机安装

做过好多使用VMware workstation虚拟机搭建的系统,这是我第一次使用Virtual Box,感觉跟Vmware差不多,我的本子的系统是win7 64位。 下面演示安装的是在VirtualBox里安装rhel 6.4 linux 64位系统。 一、VirtualBOX 版本。 二、虚拟机的配置。…

mysql 查看表v空间自增涨_MySQL InnoDB表空间加密

从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,加密用的是AES算法,而其解密是在从文件…

arm之mmu原理

实验目的:启用MMU,映射SDRAM的地址空间,操作虚拟地址实现“点灯大法”,借此掌握MMU的使用。实验环境及说明:恒颐S3C2410开发板H2410。H2410核心板扩展有64MB的K4S561632 SDRAM(4M*16bit*4BANK),地址范围是0…

osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)的理解

osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)与osal_set_event(Music_TaskID,event)的区别是osal_start_timerEx周期性的一直推送事件周期时间由SBP_PERIODIC_EVT_PERIOD决定,而osal_set_event是只推送一次。osal_start_timerEx开…

ideaspringboot项目上传服务器_PHP中使用 TUS 协议来实现可恢复文件上传

曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读。文件上传是我们几乎所有现代Web项目中的一项很常见的任务…

无密码登陆

server A /B以root账户在A上无密码ssh到B方式一ON A:ssh-keygen -t dsa -P -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys service sshd restart ON B:ssh-keygen -t dsa -P -f ~/.ssh/id_dsa cat ~/.ssh/id_d…

嵌入式常见笔试题总结

预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识…

【转】php利用mkdir创建多级目录

先介绍一下 mkdir() 这个函数: mkdir($path,0777,true); 第一个参数:必须,代表要创建的多级目录的路径; 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权; 第三个参数…

java使用xml存储数据_用存储过程和 JAVA 写报表数据源有什么弊端?

用存储过程和 JAVA 写报表数据源有什么弊端?跟着小编一起来一看一下吧!我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利。所以,报表开发…

GIT文件的三种状态

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库 中了;已修…

嵌入式常见笔试题总结(2)

预处理器(Preprocessor)   1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)   #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL   我在这想看到几件事情:   1). #…

MAC OS上JAVA1.6 升级1.7,以及 maven3.2.1配置

一、我的MAC系统 预装的Jdk是1.6,由于需要使用eclipse MARs 2版本,故需要升级到1.7 二、下载JAVA jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 不知道为什么直接下非常慢,后来用的迅雷就超级快…

sql server 创建唯一性非聚集索引语句_数据库专题—索引原理

深入浅出数据库索引原理参见:https://www.cnblogs.com/aspwebchh/p/6652855.html1.为什么给表加上主键?1.平时创建表的时候,都会给表加上主键。如果没有主键的表,数据会一行行的排列在磁盘上,查找一个数据需要一条条的进行对比。而…

String,StringBuffer,StringBuilder区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行…

oracle数据库更新语句_20_手把手教你学Python之操作数据库

数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等。数据库的主要特点:以一定的方式组织、存储数据;能为多个用户共享;与程序彼此独立。……数据库管理…

第十周学习进度

第十周 所花时间(包括上课) 10小时 代码量(行) 0行 博客量(篇) 4篇 了解到的知识点 对各组进行评价;思考并回复各组 转载于:https://www.cnblogs.com/qwer111/p/5470819.html