有些 App 平时用得好好的,一配置代理就提示“证书不受信任”“无法安全连接”。很多人以为是代理坏了,其实很可能是 App 用了证书固定(Certificate Pinning),和代理本身无关。
证书固定是什么
正常情况下,客户端会信任系统里预装的那些证书颁发机构(CA)。证书固定则是 App 自己“钦定”:只信任它内置的那一张或几张证书,其他证书一律不认。这样一来,即使中间有人拿出一张由正规 CA 签发的证书,只要不是 App 内置的那张,也会被拒绝。它的本意是防止中间人窃听,代价是“灵活性”变差。
为什么走代理会触发证书错误
代理默认只做转发,理论上不影响证书校验。但有些代理工具为了做缓存、加速或内容处理,会安装自己的根证书,对加密流量做“解密再转发”——流量经过这种处理后,App 看到的证书不再是它内置的那张,证书固定直接拒绝,于是报错。换句话说:不是代理连不上,而是“代理改了证书,App 不认”。
| 情况 | 表现 | 说明 |
|---|---|---|
| 普通转发型代理 | 证书正常 | 绝大多数代理默认如此 |
| 带解密功能的中转 | 证书不受信任 | 与 App 证书固定冲突 |
| App 自身证书过期 | 证书错误 | 与代理无关,先检查 App |
| 系统时间错误 | 证书不在有效期内 | 先校时再排查 |
遇到这种情况怎么处理
- 先排除 App 自身问题:确认 App 证书没过期、系统时间准确
- 换不带解密功能的普通转发代理:让流量原样通过,不做中间处理
- 必须解密时只在受控环境评估:不要随意安装来历不明的根证书
- 无法兼容就直连:该 App 直连访问,别硬套代理
证书固定保护了谁,也限制了谁——报错时先分清是哪一方不兼容。
与 IP 代理的关系:大多数代理只做透明转发,不会触发证书问题;当带解密能力的中转出现证书报错时,改用普通转发型代理、保持流量原样通过,是最稳妥的兼容方式。所有使用都应遵循平台规则与法律法规,用于正当业务目的。
