谷桐羽 2025-10-09 03:50 采纳率: 98.1%
浏览 1
已采纳

Charles证书过期如何重新安装?

Charles证书过期后,HTTPS抓包功能将无法正常使用,提示SSL Proxying错误。常见问题是:即使重新安装了Charles根证书,移动端或浏览器仍提示证书不受信任。这通常是因为设备系统或浏览器缓存了旧证书,或未正确启用SSL代理。如何清除旧证书并重新安装受信任的Charles新证书,并确保在目标设备上正确配置SSL Proxying?尤其在iOS 15+和Android 10以上系统中,证书安装流程有何变化?
  • 写回答

1条回答 默认 最新

  • 祁圆圆 2025-10-09 03:51
    关注

    1. 问题背景与核心机制解析

    Charles是一款广泛用于移动端和Web开发的HTTP/HTTPS抓包工具,其HTTPS抓包依赖于中间人(MITM)技术。该技术要求设备信任Charles生成的根证书(CA Certificate),否则会触发SSL Proxying错误,导致无法解密HTTPS流量。

    当Charles证书过期后,即使重新安装新证书,设备或浏览器仍可能提示“证书不受信任”,这通常由以下原因造成:

    • 旧证书未彻底清除,系统或应用缓存仍在使用过期版本
    • 新证书未在操作系统级或用户级正确安装并标记为“受信任”
    • SSL Proxying未在Charles中启用,或代理配置不完整
    • iOS 15+ 和 Android 10+ 加强了证书信任策略,需额外手动授权

    因此,解决该问题需从证书生命周期管理、系统级信任配置、代理设置三个维度协同处理。

    2. 诊断流程与常见错误场景分析

    在实施修复前,应先确认问题根源。以下是典型的诊断步骤:

    1. 检查Charles是否生成新的有效证书(Help → SSL Proxying → Install Charles Root Certificate)
    2. 确认目标设备时间是否准确(证书验证依赖系统时间)
    3. 查看设备是否已安装旧版Charles证书并尝试删除
    4. 测试是否能通过http://chls.pro/ssl 正常下载证书
    5. 检查Charles的SSL Proxying设置是否启用了对应域名(Proxy → SSL Proxying Settings)
    6. 在设备上访问HTTPS网站,观察是否仍出现安全警告

    特别注意:现代浏览器(如Chrome)和操作系统已默认禁用用户证书的信任权限,必须显式授权。

    3. 各平台证书清理与重装流程对比

    平台证书清理方式安装路径信任配置要求特殊说明
    iOS 15+设置 → 通用 → 关于本机 → 证书信任设置 → 删除Charles证书设置 → 已下载描述文件需在“证书信任设置”中手动启用完全信任iOS 13起不再自动信任用户证书
    Android 10+设置 → 安全 → 加密与凭据 → 信任的凭据 → 用户标签页删除通过浏览器下载.cer文件,选择“VPN和应用”安装部分厂商ROM需在“应用专属”中授权Android 7+ 应用可选择是否信任用户证书
    Windowscertmgr.msc → 受信任的根证书颁发机构 → 删除旧Charles证书双击.cer文件导入“受信任的根证书颁发机构”需管理员权限建议使用PowerShell脚本批量清理
    macOS钥匙串访问 → 登录/系统 → 找到Charles Proxy CA → 删除钥匙串中右键证书 → 始终信任需重启Charles并重新安装macOS Monterey后需系统完整性保护(SIP)调整

    4. Charles端配置关键步骤

    确保Charles本身配置正确是成功抓包的前提。执行以下操作:

    # 启动SSL Proxying
    Proxy → SSL Proxying Settings → Enable SSL Proxying
    
    # 添加需要解密的域名
    Add Rule → Host: *.example.com, Port: 443
    # 或使用通配符:*.com, *.net 等
    
    # 重新生成并导出新证书
    Help → SSL Proxying → Remove Charles Root Certificate
    Help → SSL Proxying → Install Charles Root Certificate
    

    注意:每次更换证书后,Charles会生成新的公钥指纹,设备必须重新下载并安装最新版本。

    5. 移动端设备具体操作指南(iOS 15+ 与 Android 10+)

    以iOS 15+为例,证书安装流程变化显著:

    1. 确保设备与电脑在同一网络,配置Wi-Fi代理指向Charles所在主机IP及端口(默认8888)
    2. 在Safari中访问 http://chls.pro/ssl 下载新证书
    3. 进入“设置 → 已下载描述文件” → 安装证书
    4. 安装完成后,进入“设置 → 通用 → 关于本机 → 证书信任设置”
    5. 找到“Charles Proxy CA”并启用“完全信任”

    Android 10+ 操作流程:

    1. 连接同一Wi-Fi,设置代理为手动,输入Charles主机IP和端口
    2. 浏览器访问 http://chls.pro/ssl 下载 .cer 证书
    3. 点击文件 → 选择“VPN和应用”安装(非WLAN)
    4. 进入“设置 → 安全 → 信任的凭据 → 用户”确认证书存在
    5. 对于目标App(如自定义WebView),需在AndroidManifest.xml中配置networkSecurityConfig允许用户证书

    6. 高级排查:证书指纹校验与MITM原理图示

    为验证证书一致性,可通过OpenSSL比对Charles证书指纹:

    openssl x509 -in charles-proxy-ssl-proxying-certificate.pem -noout -fingerprint -sha256
    

    设备端证书指纹应与Charles生成的一致。若不一致,说明仍使用旧证书。

    graph TD A[客户端发起HTTPS请求] --> B[Charles拦截请求] B --> C{是否信任Charles CA?} C -- 是 --> D[Charles作为MITM建立双向SSL连接] D --> E[解密流量并记录] E --> F[转发至目标服务器] C -- 否 --> G[SSL Proxying错误] G --> H[浏览器/系统提示证书不受信任]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 10月9日