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,一经查实,立即删除!

相关文章

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

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

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算法,而其解密是在从文件…

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

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

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

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

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.平时创建表的时候,都会给表加上主键。如果没有主键的表,数据会一行行的排列在磁盘上,查找一个数据需要一条条的进行对比。而…

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

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

查询Oracle正在执行的sql语句

--查询Oracle正在执行的sql语句及执行该语句的用户 [sql] view plaincopy SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$p…

WinForm 清空界面控件值的小技巧

WinForm 清空界面控件值的小技巧 原文:WinForm 清空界面控件值的小技巧在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextBox控件比…

virsh的使用

2019独角兽企业重金招聘Python工程师标准>>> ###这里最先要完成的是对网卡的配置(os ubuntu14.04) 目的是实现vm上是以桥接的方式联网 修改/etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback #auto eth0…

SQL Server - 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)

因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分。而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建。 三篇文章各自的链接: SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn&…

python 3.6.5编译安装_Linux系统安装Python3.6.5

Linux系统安装Python3.6.5 1、下载Python3.6.5 wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz 如果报command not found则执行:yum -y install wget命令后再进行下载 也可下载好安装包进行手动上传 2、安装Python3.6可能使用的依赖 yum install o…

从传统运维到云运维演进历程之软件定义存储(一)

运维是企业业务系统从规划、设计、实施、交付到运维的最后一个步骤,也是重要的步骤。运维从横向、纵向分可以分为多个维度和层次,本文试图抛开这纷繁复杂的概念,讲述一个传统的企业级运维人员转型到云运维人员,尤其是软件定义存储…

Abp Uow 设计

初始化入口 在AbpKernelModule类中&#xff0c;通过UnitOfWorkRegistrar.Initialize(IocManager) 方法去初始化 1 /// <summary>2 /// This class is used to register interceptor for needed classes for Unit Of Work mechanism.3 /// </summary>4 …

python3.8 实现鼠标自动移动_“新生报到”!【移动机器人 HD-1500】负载1500kg,实现了重型货物运输的自动化...

2020年第三季度欧姆龙自动化&#xff08;中国&#xff09;有限公司新品【移动机器人 HD-1500】即日起在中国市场首次对外发布&#xff0c;实现了重型货物运输的自动化。这款最新的自动化移动机器人重型载荷能力为1500 kg&#xff01;更高的载荷能力可以令客户实现以前无法实现的…

android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...

一、HTTP协议和HTTPS协议。(1) HTTPS协议HTTP协议SSL协议&#xff0c;默认端口&#xff1a;443(2) HTTP协议&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;超文本传输协议。默认端口&#xff1a;80&#xff0c;其中包含请求和响应两部分&#xff0c;其中请求…

C#的四舍五入函数

2019独角兽企业重金招聘Python工程师标准>>> 1.四舍六入&#xff08;国外的四舍五入&#xff09; Math.Round&#xff08;num&#xff09;; 2.四舍五入 Math.Round(num,MidpointRounding.AwayFromZero); 转载于:https://my.oschina.net/CrazyBoy1024/blog/746268

【BZOJ2243】 [SDOI2011]染色

Description 给定一棵有n个节点的无根树和m个操作&#xff0c;操作有2类&#xff1a; 1、将节点a到节点b路径上所有点都染成颜色c&#xff1b; 2、询问节点a到节点b路径上的颜色段数量&#xff08;连续相同颜色被认为是同一段&#xff09;&#xff0c;如“112221”由3段组成&am…

数字信号处理的fpga实现_FPGA数字信号处理:通信类I/Q信号及产生

大侠好&#xff0c;欢迎来到FPGA技术江湖&#xff0c;江湖偌大&#xff0c;相见即是缘分。大侠可以关注FPGA技术江湖&#xff0c;在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源&#xff0c;或者一起煮酒言欢。大侠好&#xff0c;“宁夏李治廷”再一次和各位见…