ssl新闻资讯

文档中心

Charles鎶撳寘绁炲櫒鎵嬫妸鎵嬫暀浣犲畨瑁匟TTPS璇佷功锛堥檮璇︾粏姝ラ锛?txt

时间 : 2025-09-27 15:43:16浏览量 : 4

2Charles鎶撳寘绁炲櫒鎵嬫妸鎵嬫暀浣犲畨瑁匟TTPS璇佷功锛堥檮璇︾粏姝ラ锛?txt

作为一名网络安全工程师,我经常需要使用Charles这类抓包工具来分析应用流量。但很多新手在使用Charles进行HTTPS抓包时,总会遇到"证书不受信任"的问题。今天我就用最通俗易懂的方式,结合具体案例,带大家彻底解决这个问题。

一、为什么需要安装Charles的HTTPS证书?

想象一下这样的场景:你正在测试公司新开发的APP,想查看它与服务器之间的通信内容。当你用Charles抓包时,发现所有HTTPS请求都显示为乱码或直接失败——这是因为现代应用普遍采用HTTPS加密传输。

真实案例:去年我们团队测试某金融APP时,发现支付接口返回异常。但因为没有正确配置Charles证书,无法解密HTTPS流量,导致排查工作停滞了2天。后来正确安装证书后,立即发现是签名参数编码问题。

二、各平台证书安装详细步骤

Windows系统安装指南

1. 获取证书文件

- 打开Charles → Help → SSL Proxying → Save Charles Root Certificate

- 你会得到一个`.pem`或`.cer`文件(比如`charles-proxy-ssl-proxying-certificate.pem`)

2. 安装到系统信任库

```powershell

可以通过命令行快速安装

certutil -addstore -f "ROOT" charles-proxy-ssl-proxying-certificate.pem

```

或者通过图形界面:

- 双击证书文件 → 选择"安装证书"

- 存储位置选"本地计算机" → 选择"将所有证书放入下列存储"

- 点击"浏览"选择"受信任的根证书颁发机构"

3. 验证是否成功

打开Chrome访问https网站,地址栏应该不再显示安全警告

macOS系统特别说明

在Mac上会遇到更多权限问题:

```bash

需要先将PEM转换为CER格式

openssl x509 -inform PEM -in charles.pem -outform DER -out charles.cer

然后使用钥匙串访问导入

security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain charles.cer

```

常见坑点:MacOS Catalina之后需要在导入后手动设置始终信任:

1. 钥匙串访问中找到Charles证书

2. 展开信任设置

3. "使用此证书时"选择"始终信任"

Android设备配置要点

以华为Mate40 Pro为例:

1. 下载证书到手机

chls.pro/ssl (在手机浏览器访问Charles提供的这个地址)

2. 修改证书名称

必须将`.pem`改为`.crt`后缀才能识别

3. 特殊机型处理

某些国产ROM需要额外步骤:

```shell

EMUI系统需要进入安全→加密与凭据→从存储设备安装

4. Android高版本限制

针对Android 7+的系统应用,还需要在App的network_security_config.xml中添加我们的Charles证书:

```xml

iOS设备的特殊处理

最近帮客户调试iPad应用时发现的技巧:

1. 必须通过Safari下载:其他浏览器可能无法正确触发安装流程

2. 描述文件验证:iOS会提示"未验证的描述文件",需要在设置→通用→VPN与设备管理中手动信任

3. iOS13+的额外步骤

```plaintext

设置 → 关于本机 → 证书信任设置 → 启用Charles根证书完全信任

三、高级配置技巧(工程师必备)

1. SSL代理白名单配置

避免所有流量都被解密带来的性能问题:

Proxy → SSL Proxying Settings → Add

Host: api.example.com

Port:443

2. Chrome特殊处理方案

新版Chrome有自己的证书库:

Windows下需要单独导入Chrome

certmgr.msc → Personal → Import Charles cert

Mac下需要通过终端强制刷新

sudo killall trustd && sudo killall mDNSResponderHelper && sudo killall mDNSResponder && sudo dscacheutil -flushcache && sudo killall Terminal;

3. Charles根CA备份策略

建议团队共享同一份CA:

```python

Python脚本自动分发示例(简化版)

import os, shutil, subprocess, sys, requests, tempfile, platform;

def install_cert():

if platform.system() == "Windows":

subprocess.run(["certutil", "-addstore", "-f", "ROOT", "charles.crt"])

elif platform.system() == "Darwin":

subprocess.run(["security", "add-trusted-cert", "-d", "-r", "trustRoot", "-k", "/Library/Keychains/System.keychain", "charles.crt"])

四、安全风险警示??(重点)

虽然Charles很强大,但必须注意:

1. 生产环境禁用原则

某电商公司曾发生事故:测试环境的Charles代理配置被误上传到生产服务器,导致所有支付请求被中间人截获。

2.法律风险提示

在未经授权的情况下对他人应用进行HTTPS解密可能涉及法律问题。去年某安全研究员就因擅自解密公司内部通讯而被起诉。

建议的工作流程应该是:

?获取书面授权→?在隔离测试环境操作→?及时清理痕迹

五、排查指南(收藏备用)

当遇到问题时可以这样检查:

1?? Charles是否开启SSL代理?(Proxy→SSL Proxying Settings)

2?? 目标域名是否在包含列表?

3?? 客户端时间是否正确?(证书有效期校验)

4?? iOS是否启用了完全信任?

5?? Android是否配置了networkSecurityConfig?

6?? Windows是否更新了受信任的根存储?

记住这个口诀:"一开二配三时间,四信五安六更新"

希望这篇结合实战经验的文章能帮你彻底搞定Charles HTTPS抓包问题!如果还有疑问欢迎留言讨论~

TAG:charles怎么安装https的证书,charles下载证书,下载charles证书的网址进不去,charles安装步骤,charles的安装和使用