You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Charles抓取终端请求?SSL验证失败问题排查

问题描述

已为终端设置代理:

http_proxy=http://localhost:8888
https_proxy=https://localhost:8888

执行curl https://google.com时出现错误:

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8888

Charles配置正常,Safari的HTTPS流量可正常显示(已安装Charles根证书),但fastlane使用Faraday获取JSON时出现SSL验证失败错误:

[15:45:56]: SSL_connect SYSCALL returned=5 errno=0 peeraddr=[::1]:8888 state=error: certificate verify failed
[!] SSL_connect SYSCALL returned=5 errno=0 peeraddr=[::1]:8888 state=error: certificate verify failed


解决方案

1. 确保Charles根证书被系统完全信任

Safari正常说明证书已安装,但终端工具依赖的证书存储可能未同步:

  • 打开钥匙串访问,找到Charles Proxy CA证书,右键选择显示简介
  • 展开信任选项,设置使用此证书时为始终信任
  • 将证书导出为PEM格式:右键证书→导出,格式选PEM,保存为charles.pem

2. 给终端工具配置证书路径

针对curl

设置环境变量指定CA证书:

export SSL_CERT_FILE=/path/to/charles.pem

测试:

curl https://google.com

针对Ruby/Fastlane/Faraday

  • 查看Ruby默认证书文件路径:
    ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
    
  • 将Charles证书内容追加到该文件:
    sudo cat /path/to/charles.pem >> $(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')
    

或直接设置Ruby环境变量:

export SSL_CERT_FILE=/path/to/charles.pem

3. 检查Charles代理配置

  • 确认开启SSL代理:Proxy菜单→SSL Proxying Settings,勾选Enable SSL Proxying,添加需要代理的域名(或用*匹配所有)
  • 确认代理端口正确:Proxy菜单→Proxy Settings,HTTP和HTTPS端口均为8888,允许本地连接

4. Fastlane专属配置(可选)

若仍报错,可在Fastfile中手动配置Faraday:

conn = Faraday.new(url: '目标接口地址') do |faraday|
  faraday.proxy 'http://localhost:8888'
  faraday.ssl.ca_file = '/path/to/charles.pem'
end

内容的提问来源于stack exchange,提问作者Lescai Ionel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:53:28