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

Android证书固定仅首次请求抛异常,后续请求正常问题排查

问题原因分析

首次请求抛出异常的直接原因

你配置的证书固定值是目标服务器原始证书的SHA-256哈希,开启mitmproxy代理后,mitmproxy会在SSL握手时替换目标服务器的证书为自身签发的CA证书。首次请求时,Android系统会严格按照network-security-config中的证书固定规则校验证书哈希,发现mitmproxy的证书哈希与固定值不匹配,直接触发javax.net.ssl.SSLHandshakeException。

后续请求返回200的核心原因

Android平台的HttpsURLConnection默认启用了SSL会话复用机制:首次握手失败后,mitmproxy已完成基础链路的会话协商,后续请求会复用已建立的SSL会话上下文。而会话复用阶段不会重新执行完整的证书链校验(包括证书固定的哈希校验),仅通过会话ID或会话ticket快速建立连接,因此绕过了证书固定校验,请求得以正常返回200。

重新连接代理后首次请求再次异常的原因

重新连接代理网络时,设备网络连接状态重置,之前缓存的SSL会话被清空。此时发起新请求需要重新建立SSL会话,系统会再次执行完整的证书链校验,mitmproxy的证书哈希依然不匹配固定值,因此再次抛出异常;后续请求又会复用新建立的会话,恢复正常响应。

内容的提问来源于stack exchange,提问作者Sergey Yakimchik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:07