当前位置:首页 > 云服务器 > 正文

https抓包证书怎么配置?如何安装信任证书

HTTPS 抓包(Packet Capture)是网络安全测试、应用调试以及性能分析中的核心技能,由于 HTTPS 协议基于 TLS/SSL 加密,传统的抓包工具(如 Wireshark)直接捕获的数据包通常是乱码或无法解析的,要实现 HTTPS 抓包,核心原理是中间人攻破(MITM, Man-in-the-Middle),即通过安装自定义的根证书(CA Certificate),让客户端信任该证书,从而解密并查看加密流量。

以下是关于 HTTPS 抓包证书的详细操作指南、原理分析及注意事项。

核心原理:为什么需要自定义证书?

在标准的 HTTPS 通信中,服务器会出示由受信任的公共证书颁发机构(如 DigiCert, Let’s Encrypt, GlobalSign 等)签发的证书,客户端(浏览器或 App)内置了这些公共 CA 的根证书,因此能验证服务器身份并建立加密通道。

为了实现抓包,我们需要充当“中间人”:

  1. 拦截请求:抓包工具(如 Fiddler, Charles, mitmproxy)拦截客户端发出的请求。
  2. 杜撰证书:抓包工具动态生成一个与目标域名相同的证书,并使用本地自定义的根证书进行签名。
  3. 建立连接
    • 抓包工具与客户端建立 HTTPS 连接(使用杜撰证书)。
    • 抓包工具与真实服务器建立 HTTPS 连接(使用真实证书)。
  4. 解密查看:由于客户端信任了抓包工具安装的本地根证书,因此不会报错,流量得以明文展示在抓包工具中。

主流工具及证书配置方法

不同的抓包工具配置方式略有不同,以下列举最常用的三种工具。

Fiddler (Windows/Mac)

Fiddler 是最经典的 HTTP/HTTPS 调试代理。

https抓包证书怎么配置?如何安装信任证书 第1张

  • 步骤 1:启用 HTTPS 解密

    打开 Fiddler -> Tools -> Options -> HTTPS 标签页。

    • 勾选 Decrypt HTTPS traffic。
    • 勾选 Ignore server certificate errors(忽略服务器证书错误,防止因证书过期或域名不匹配导致连接失败)。

  • 步骤 2:导出根证书

    在 Tools -> Options -> Actions 中,点击 Export Root Certificate to Desktop。

    • 这将生成一个 FiddlerRoot.cer 文件。
  • 步骤 3:安装证书
    • Windows:双击 .cer 文件 -> 安装证书 -> 本地计算机 -> 将所有的证书都放入下列存储

      -> 浏览选择 受信任的根证书颁发机构。

    • Android (7.0+):需将证书转换为 .p12 或 .pem 格式,并通过设备策略或 Root 权限安装到系统信任存储区(Android 7.0 以上默认不信任用户安装的 CA 证书,除非 App 配置了 network_security_config 允许用户证书)。
    • iOS:通过邮件发送证书,在“设置”->“通用”->“描述文件”中安装,并开启信任。

Charles Proxy (Mac/Windows)

Charles 在 Mac 上体验极佳,支持自动安装证书。

https抓包证书怎么配置?如何安装信任证书 第2张

  • 步骤 1:启用 SSL Proxying

    Proxy -> SSL Proxying Settings -> Add 添加域名(如 表示所有域名)-> OK。

  • 步骤 2:安装证书
    • Mac:Help -> SSL Proxying -> Install Charles Root Certificate,系统会自动打开钥匙串访问并提示信任。
    • Windows:Help -> SSL Proxying -> Install Charles Root Certificate。
    • 移动端:在浏览器访问 chls.pro/ssl 下载证书并安装。

mitmproxy (命令行工具, Linux/Mac/Windows)

适合自动化测试和开发者,基于 Python。

  • 步骤 1:启动 mitmproxy mitmweb # 启动 Web 界面 # 或 mitmdump # 启动后台模式
  • 步骤 2:获取证书

    mitmproxy 会自动生成证书存储在 ~/.mitmproxy/ 目录下。

    • 主证书文件:mitmproxy-ca-cert.pem 或 mitmproxy-ca-cert.p12。

  • 步骤 3:安装证书

    将证书复制到目标设备,并按照对应操作系统的流程安装到“受信任的根证书颁发机构”。

移动端抓包的特别注意事项

移动端(Android/iOS)由于系统安全机制的限制,配置比桌面端复杂。

平台 版本限制 解决方案
Android 0 (API 24) 以下 直接安装用户证书即可信任。
Android 0 (API 24) 及以上

默认不信任用户安装的 CA 证书

Root 设备:将证书推送到 /system/etc/security/cacerts/。

App 配合:App 的 AndroidManifest.xml 中设置 android:networkSecurityConfig,允许用户证书。

Magisk 模块:使用 Magisk 模块(如 “TrustUserCerts”)强制信任用户证书。

https抓包证书怎么配置?如何安装信任证书 第3张

iOS 所有版本 安装描述文件(Profile)。

进入 设置 -> 通用 -> 关于本机 -> 证书信任设置。

开启对抓包工具根证书的完全信任。

常见问题与故障排查

抓包工具显示 “Connection Refused” 或 “SSL Handshake Failed”

  • 原因:证书未正确安装、未信任,或抓包工具未正确配置 SSL 代理。
  • 解决
    • 检查抓包工具的代理端口(默认 8888 或 8889)是否被防火墙拦截。
    • 确认客户端(浏览器/App)的代理设置指向了抓包工具的 IP 和端口。
    • 对于 Android 7.0+,确认是否已解决用户证书信任问题。

某些 App 无法抓包(证书固定/Certificate Pinning)

  • 原因:App 开发者启用了证书固定,只信任特定的证书或哈希值,拒绝信任任何自定义 CA 证书。
  • 解决
    • Android:使用 Frida 或 Xposed 框架 Hook 掉证书固定逻辑,例如使用 Frida 脚本绕过 SSLContext 的检查。
    • iOS:使用 Objection 或 Frida 进行运行时载入,绕过安全检测。
    • 注意:绕过证书固定可能违反法律或服务条款,仅限授权的安全测试。

抓包后数据乱码或无法解析

  • 原因:抓包工具未正确解密,或使用了 QUIC/HTTP3 协议(基于 UDP,传统代理难以拦截)。
  • 解决
    • 确保 Decrypt HTTPS traffic 已勾选。
    • 对于 HTTP/3,需使用支持 QUIC 抓包的工具(如 mitmproxy 的新版本或专门的 QUIC 分析工具),或强制客户端降级到 HTTP/2。

安全与伦理提示

  • 仅限授权测试:HTTPS 抓包涉及中间人攻破原理,仅在拥有明确授权的安全测试、个人应用调试或企业内部网络管理中使用。
  • 隐私保护

    :不要在公共 Wi-Fi 或非受控环境中随意安装未知来源的 CA 证书,这可能导致敏感数据泄露。

  • 及时移除:测试结束后,建议从设备中移除自定义根证书,以恢复系统的默认安全状态。


相关问题与解答

问题 1:为什么 Android 7.0 及以上版本默认不信任用户安装的 CA 证书?如何在不 Root 的情况下解决?

解答:

Android 7.0 引入此限制是为了防止恶意 App 通过安装用户证书来窃听加密流量,提升系统整体安全性。

在不 Root 的情况下,解决此问题的方法主要有两种:

  1. App 端配合:如果测试的是自己开发的 App,可以在 res/xml/network_security_config.xml 中配置 trust-anchors,明确允许用户安装的证书。
  2. 企业设备管理:如果是企业设备,可通过 MDM(移动设备管理)策略将证书预装到系统信任存储区。
  3. 使用支持用户证书的 App:部分 App 允许在设置中手动选择信任的证书,但这需要 App 本身支持该功能。

    注:对于第三方 App,若不 Root 且 App 未开放配置,通常无法直接抓包,需借助 Frida 等 Hook 技术绕过证书固定。

问题 2:使用 Fiddler 抓包时,浏览器提示“您的连接不是私密连接”(NET::ERR_CERT_AUTHORITY_INVALID),但证书已安装,如何解决?

解答:

出现此错误通常意味着浏览器或操作系统未将 Fiddler 的根证书添加到“受信任的根证书颁发机构”存储区,或者证书安装后未刷新信任链。

解决步骤如下:

  1. 重新安装证书:找到 FiddlerRoot.cer,右键选择“安装证书”。
  2. 选择存储位置:在向导中,务必选择“将所有的证书都放入下列存储”,然后点击“浏览”,选择“受信任的根证书颁发机构”(Trusted Root Certification Authorities)。注意:不要选择“个人”或“中间证书机构”。
  3. 重启浏览器:安装完成后,完全关闭并重新打开浏览器。
  4. 检查 Fiddler 设置:确保 Fiddler 的 Tools -> Options -> HTTPS 中,Ignore server certificate errors 已勾选,且 Decrypt HTTPS traffic 已启用。
  5. 清除浏览器缓存:有时浏览器会缓存旧的证书状态,清除 SSL 状态或缓存后重试。

0