Android手机无法连接Charles Proxy:SSL握手失败问题求助
Android连接Charles Proxy时SSL握手失败排查方案
已执行操作
- 电脑端安装Charles Proxy:版本[insert version number],操作系统[Windows/macOS/Linux]
- 配置Charles SSL代理:打开Charles,进入
Proxy > SSL Proxying Settings,启用SSL Proxying并添加*到代理位置列表 - Android设备代理设置:连接与电脑同网络Wi-Fi,进入设置>网络和互联网>Wi-Fi,长按Wi-Fi选修改网络,勾选高级选项,手动设置代理为电脑IP+端口8888并保存
- 安装Charles根证书:Android浏览器访问
http://charlesproxy.com/getssl下载证书,进入设置>安全>加密与凭据>从存储安装,完成后确认证书在可信凭据的用户标签下
当前问题
完成上述操作后,仍出现SSL握手失败,无法正常连接Charles抓包。
排查修复步骤
确认Charles设备访问权限
打开Charles,进入Proxy > Access Control Settings,将Android设备的IP地址添加到允许列表,或临时勾选"Allow all computers to connect"(测试场景使用,正式环境建议指定IP)适配Android 7+证书信任规则
Android 7及以上系统默认不信任用户安装的证书,需针对性处理:- 测试debug包:在
AndroidManifest.xml中添加android:networkSecurityConfig="@xml/network_security_config",并创建res/xml/network_security_config.xml文件,内容如下:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="user"/> </trust-anchors> </debug-overrides> </network-security-config> - 抓包release包:需将Charles证书安装到系统凭据目录(需Root权限)
- 测试debug包:在
细化SSL代理规则
虽然添加了通配符*,部分应用可能存在特殊网络配置,可尝试在SSL Proxying Settings中明确添加目标域名(如*.example.com),避免通配符匹配失效检查网络拦截与端口占用
- 关闭电脑端防火墙、杀毒软件的网络拦截功能
- 验证8888端口是否被占用:Windows执行
netstat -ano | findstr 8888,macOS/Linux执行lsof -i :8888,若被占用需更换Charles代理端口或关闭占用进程
验证网络连通性
在Android设备上ping电脑IP确认网络可达;同时检查Charles的Proxy > Proxy Settings,确认HTTP代理端口为8888且已启用更新Charles版本
若使用老旧版本Charles,可能存在系统兼容性问题,尝试更新至最新稳定版
内容的提问来源于stack exchange,提问作者user25306650
相关产品推荐
相关产品推荐

