三星设备安装Charles Proxy证书后无法解密HTTPS流量问题求助
解决方案
问题根因
三星OneUI自研了额外的SSL校验规则,和原生AOSP、小米MIUI的逻辑不同:即使用户手动安装了用户层级CA证书,所有非浏览器类应用默认会拒绝信任用户证书,因此会触发SSL握手失败报错。
修复方案
方案1:Root设备后安装系统级证书(适配所有应用)
- 从Charles导出PEM格式的SSL代理证书,本地计算证书哈希:
执行命令openssl x509 -inform PEM -subject_hash_old -in 你的Charles证书文件名.pem | head -1,得到8位哈希值,将证书重命名为「哈希值.0」,例:得到的哈希为a329ba66,就重命名为a329ba66.0 - 连接已Root的三星设备,将重命名后的证书推送至系统证书目录:
adb push a329ba66.0 /system/etc/security/cacerts/ - 给证书设置权限:
adb shell chmod 644 /system/etc/security/cacerts/a329ba66.0 - 重启设备后,Charles证书会出现在「受信任的凭据-系统」列表中,即可正常解密所有应用的HTTPS流量
方案2:未Root设备修改目标应用网络配置(仅适配单个可重打包应用)
- 解压目标APK安装包,在
res/xml/路径下新建network_security_config.xml文件,写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>
- 在
AndroidManifest.xml的application标签下添加属性:android:networkSecurityConfig="@xml/network_security_config" - 重新签名打包APK后安装到设备,即可正常抓包该应用的HTTPS流量
额外排查点
部分OneUI版本默认开启WLAN安全拦截功能,会主动阻断代理环境的未知CA握手,可前往「设置-生物识别和安全性-安全防护」,关闭「WLAN安全检测」「恶意网络拦截」开关后重试。
故障参考截图



内容的提问来源于stack exchange,提问作者Kosh
相关产品推荐
相关产品推荐

