问题:如何解决Mac Charles证书过期问题?
在使用Charles进行HTTPS抓包时,经常会遇到“Charles证书过期”的问题,导致无法正常解密HTTPS请求。该问题通常是因为Charles自带的SSL代理证书(Charles Proxy SSL Certificate)已过期或未被系统正确信任所引起。用户常会发现打开浏览器访问HTTPS网站时提示证书错误,或者移动端设备连接后无法抓包。解决方法主要包括:重新安装或更新Charles证书、清除旧证书并重新受信、配置系统钥匙串设置、以及确保系统时间和时区正确。此外,在macOS升级后也可能需要重新信任证书。掌握这些常见排查与修复步骤,是保障Charles稳定抓包的关键。
1条回答 默认 最新
巨乘佛教 2025-07-10 11:35关注一、问题现象:Charles提示证书过期
在使用 Charles 进行 HTTPS 抓包时,用户可能会遇到如下错误提示:
This certificate has expired or is not yet valid.ERR_CERT_DATE_INVALID- 浏览器或移动端设备访问 HTTPS 页面失败
这些错误通常表明 Charles 的 SSL 代理证书(Charles Proxy SSL Certificate)已过期或未被系统正确信任。
二、根本原因分析
Charles 使用中间人攻击(MITM)方式解密 HTTPS 请求,因此需要本地安装其根证书。常见导致证书过期的原因包括:
- 证书有效期为1年,到期后自动失效
- macOS升级后钥匙串重置,需重新信任证书
- 手动误删了证书
- 系统时间设置不正确,造成证书验证失败
三、解决方案详解
1. 清除旧证书并重新安装
步骤如下:
# 打开钥匙串访问 open /Applications/Utilities/Keychain\ Access.app # 在“登录”钥匙串中查找以下证书: - Charles Proxy Custom Root Certificate - Charles Proxy SSL Certificate - Charles Proxy CA # 右键删除上述证书 右键 -> 删除2. 生成新证书并重新受信
启动 Charles 后,在菜单栏选择:
- Proxy → SSL Proxying Settings...
- 点击 "Install Charles Root Certificate" 安装根证书
- 前往钥匙串访问,找到新安装的证书
- 双击证书 → 展开信任 → 选择始终信任
3. 检查系统时间和时区设置
若系统时间错误,会导致证书验证失败。可通过以下命令检查:
date建议同步网络时间:
sudo sntp -sS time.apple.com4. 配置移动端设备信任证书
对于 iOS 或 Android 设备连接 Charles 代理的情况,还需手动信任证书:
平台 操作路径 iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Charles 根证书 Android 设置 → 安全 → 加密与凭据 → 信任的凭据 → 用户标签下查看 5. 使用 Charles 内建功能更新证书
Charles 提供了自动更新证书的功能:
- Help → SSL Proxying → Install Charles Root Certificate
- Help → SSL Proxying → Remove Charles Root Certificate
四、进阶排查流程图
graph TD A[HTTPS抓包失败] --> B{是否出现证书过期提示?} B -- 是 --> C[清除旧证书] C --> D[重新安装Charles根证书] D --> E[确认钥匙串中设为始终信任] E --> F[检查系统时间是否正确] F --> G[重启Charles和浏览器] B -- 否 --> H[检查代理配置是否正确] H --> I[检查移动端是否信任证书] I --> J[尝试更换端口或关闭SSL Proxying]五、预防机制与最佳实践
为了避免频繁处理证书问题,可以采取以下措施:
- 每年定期清理并重新安装证书
- macOS升级后第一时间重新信任证书
- 将 Charles 的 SSL 证书导出备份,便于快速恢复
- 使用脚本自动化证书管理任务(如清理、安装等)
- 在 CI/CD 环境中集成证书信任逻辑,用于自动化测试场景
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报