Charles 是一款强大的网络调试代理工具, 主要用于监控和调试 HTTP、HTTPS、WebSocket 等协议的网络请求和响应。它通常用于开发和测试 web 应用、移动应用、API 调试等场景。通过 Charles, 开发者可以捕获并分析客户端与服务器之间的网络流量, 查看请求的详细信息 (如请求头、请求体、响应内容、状态码等), 以及模拟和修改请求。
安装 Charles
添加公钥
使用 wget
下载并添加 Charles 的公钥
wget -q -O - https://www.charlesproxy.com/packages/apt/PublicKey | sudo apt-key add -
或者使用 apt-key adv
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 1AD28806
添加资源库
将 Charles 的 APT 包资源库添加到系统源列表中
sudo sh -c 'echo deb https://www.charlesproxy.com/packages/apt/ charles-proxy main > /etc/apt/sources.list.d/charles.list'
更新源并安装 Charles
更新软件源并安装 Charles
sudo apt-get update
sudo apt-get install charles-proxy
破解 Charles
Charles 在线破解工具
github.com/8enet/Charles-Crack
将下载的 Charles.jar
文件, 替换到安装目录下。默认安装目录在 /usr/lib/charles-proxy/
注意: 为了保险起见先把原始 charles.jar
复制到其他目录, 将破解后的 charles.jar
移动到对应位置, 确保该目录下只有一个 charles.jar
就好了
配置 Charles
生成 SSL 证书
- 在 Charles 中, 选择
Help
->SSL Proxying
->Install Charles Root Certificate
- 安装后可以在
~/.charles/ca/
目录找到两个证书文件charles-proxy-ssl-proxying-certificate.cer
charles-proxy-ssl-proxying-certificate.pem
转换证书格式
使用 openssl
转换 PEM 格式为 CRT 格式
openssl x509 -outform der -in charles-proxy-ssl-proxying-certificate.pem -out charles-proxy-ssl-proxying-certificate.crt
添加根证书到系统
注意扩展阅读部分
- 在
/usr/share/ca-certificates
下创建一个charles
目录 - 再将转换格式后得到的证书
charles-proxy-ssl-proxying-certificate.crt
复制到/usr/share/ca-certificates/charles
中
sudo mkdir /usr/share/ca-certificates/charles
sudo cp ~/.charles/ca/charles-proxy-ssl-proxying-certificate.crt /usr/share/ca-certificates/charles/
更新根证书配置
-
编辑
/etc/ca-certificates.conf
文件, 将charles/charles-proxy-ssl-proxying-certificate.crt
添加到文件末尾echo 'charles/charles-proxy-ssl-proxying-certificate.crt' >> /etc/ca-certificates.conf
-
更新证书配置
sudo update-ca-certificates
-
完成后发现
/etc/ssl/certs
目录中应该多了一个charles-proxy-ssl-proxying-certificate.pem
文件, 表示成功
配置 Charles SSL 代理
- 在 Charles 中, 选择
Proxy
->SSL Proxy Settings
->SSL Proxy
- 添加一个 Host 为
*
, Port 为443
的 Location 来代理所有 HTTPS 请求
测试代理
设置 Charles 使用 8888 端口 SOCKS 代理, 访问一个网站, 查看是否成功抓取 HTTP 和 HTTPS 请求信息
扩展阅读 - Ubuntu 添加可信任根证书
添加根证书
Ubuntu 下添加根证书非常简单, 只要将证书 (扩展名为crt) 复制到 /usr/local/share/ca-certificates
目录, 并运行 update-ca-certificates
[yaxin@ubox ~]$ sudo cp xinmu.crt /usr/local/share/ca-certificates
[yaxin@ubox ~]$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
删除根证书
删除证书并更新证书存储
直接将 /usr/local/share/ca-certificates
对应的证书删除, 然后执行 update-ca-certificates
[yaxin@ubox ~]$ sudo rm -f /usr/local/share/ca-certificates/xinmu.crt
[yaxin@ubox ~]$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
这时候并不会提示 1 removed
, 但证书是已经被删除了的
原理
其实 update-ca-certificates
是一个 shell 脚本, 使用 which
找出 update-ca-certificates
的绝对路径, 然后打开就可以查看其源码
[yaxin@ubox ~]$ which update-ca-certificates
/usr/sbin/update-ca-certificates
[yaxin@ubox ~]$ file /usr/sbin/update-ca-certificates
/usr/sbin/update-ca-certificates: POSIX shell script, ASCII text executable
通过阅读源码可以看出, update-ca-certificates
命令的本质其实是将 PEM 格式的根证书内容附加到 /etc/ssl/certs/ca-certificates.crt
, 而其中本身就包含了系统自带的各种可信根证书.
原文
Charles - APT repository
初学Ubuntu:Ubuntu16.04系统Charles的配置
Ubuntu添加可信任根证书