ProxyPin 中文文档 下载 App

ProxyPin HTTPS 根证书安装与全平台信任指南

为什么需要根证书

HTTPS 流量使用 TLS 加密传输,ProxyPin 要解密查看明文内容,需要作为中间人(MITM)拦截 TLS 连接。这就要求系统信任 ProxyPin 动态生成的自签名根证书——只有这样,浏览器和 App 才会认为 ProxyPin 生成的证书是合法的。

默认状态:ProxyPin 启动后只能抓 HTTP。开启 HTTPS 代理 + 安装根证书后才能解密 HTTPS。

桌面端(Windows / macOS / Linux)

Windows

  1. 打开 ProxyPin 桌面端,在顶部菜单栏点击「证书」→「安装证书」
  2. 选择「系统」作用域(推荐),这样所有用户和应用都信任该证书
  3. 按证书导入向导完成安装
  4. 安装完成后,打开「浏览器」→ 「Internet 选项」→ 「内容」→ 「证书」→ 「受信任的根证书颁发机构」,确认 ProxyPin CA 已在列表中

如果只想让当前用户信任,可选择「当前用户」作用域。

macOS

  1. 打开 ProxyPin,点击「证书」→「安装证书」
  2. 系统钥匙串访问会自动打开
  3. 将 ProxyPin 的根证书拖入「系统」钥匙串
  4. 双击该证书 → 展开「信任」部分 → 将「始终信任」设为「使用该证书时」
  5. 关闭窗口时输入系统密码确认

Linux

Linux 发行版众多,证书安装方式各不相同。ProxyPin 提供导出证书功能,手动安装步骤:

  1. 在 ProxyPin 中导出根证书(CRT 或 PEM 格式)
  2. Debian/Ubuntu:将证书复制到 /usr/local/share/ca-certificates/ 后执行 sudo update-ca-certificates
  3. CentOS/RHEL:复制到 /etc/pki/ca-trust/source/anchors/ 后执行 sudo update-ca-trust

移动端(Android / iOS)

Android 用户证书 vs 系统证书

Android 有两类证书存储位置:

类型位置信任范围适用版本
用户证书设置 → 安全 → 证书仅部分 AppAndroid 7.0-
系统证书/system/etc/security/cacerts/所有 App所有版本

Android 7.0+ 的 App 默认不信任用户证书。解决方案二选一:

方案 A:Root + 移动到系统目录

  1. ProxyPin 下载根证书(.crt 格式)
  2. 用 Root 权限将证书移动到 /system/etc/security/cacerts/
  3. 修改权限为 644
  4. 重启设备

方案 B:App 配置 network_security_config

在目标 App 的 AndroidManifest.xml 中配置允许用户证书。这需要对 App 有开发权限,适合自己开发的应用。

iOS 信任步骤(关键!)

iOS 必须分两步:先安装描述文件 → 再手动信任根证书。

第一步:安装配置描述文件

  1. 打开 ProxyPin,按提示安装 VPN 配置描述文件
  2. 系统「设置」→「通用」→「VPN 与设备管理」中能看到已安装的 ProxyPin 配置

第二步:手动信任根证书(经常被遗漏!)

  1. iOS「设置」→「通用」→「关于本机」
  2. 滚到最底部 → 「证书信任设置」
  3. 找到 ProxyPin CA,将开关打开
  4. 系统安全警告 → 确认

完成后 Safari 和大多数 App 的 HTTPS 流量才能被正常解密。

验证证书是否生效

安装完成后,在 ProxyPin 中开启「HTTPS 代理」,然后:

  1. 访问任意 HTTPS 网站(如 https://example.com)
  2. 在 ProxyPin 请求列表中找到该请求
  3. 查看响应体内容——如果能看到 HTML 源码或 JSON 数据,说明证书生效;如果显示加密或乱码,说明证书未正确安装

常见问题

Q:浏览器警告"您的连接不是私密连接"怎么办?

这是因为浏览器不信任 ProxyPin 的根证书。返回对应平台的证书安装步骤,确认证书已安装且信任。如果已经安装仍然警告,可能是浏览器自己的证书存储问题(Firefox 使用独立证书库,需要单独导入)。

Q:Flutter 应用证书固定的情况?

ProxyPin 内置了 Flutter 证书固定绕过,一般无需额外处理。详见 Flutter 绕过证书固定。