安装根证书

本接口用于在您的安卓系统内安装系统级别的根证书,具备全安卓版本的兼容性。 您可能会产生一些混淆,这里的根证书和 LAMDA 的加密证书分别是什么,LAMDA 加密证书是用于加密 LAMDA 和您之间的通信流量,而这里所指的根证书是指安卓系统内置的根证书, 这个证书用于系统中 HTTPS 等相关流量的加解密工作。如果您了解过抓包,这里的根证书即是指抓包用的证书。

您可以通过本接口 + 设置代理接口来实现中间人抓包,当然,您也可以选择使用我们封装好的 startmitm.py,我们在此只是为了给您介绍这个基础功能实现。

准备工作

请确保您已经准备好 fiddler, mitmproxy 给您的证书,对于 mitmproxy,您应该使用的证书是 mitmproxy-ca-cert.pem。而对于 fiddler,则可能是 crt 格式,您应该可以在 fiddler 导出这个文件,直接将该文件路径作为参数提供即可无需关心任何文件名转换问题。为了避免浪费不必要的时间,在这里推荐使用 mitmproxy,如果您使用的是 Charles 等,我们无法确保您可以一次性完成设置,因为此类应用配置项目较为复杂且您可能需要理解各种理类型才能正确配置 HTTPS 中间人,如果您一定要使用,建议使用 Charles 的 socks5 作为代理协议。

安装根证书

有了您准备好的证书文件的路径,您可以直接编写以下接口来安装 mitmproxy 的根证书,一次安装后将会永久存在无需重复安装。

d.install_ca_certificate(cert_path)

卸载根证书

您可以调用以下代码来移除安装在设备上的自定义根证书,我们不建议您经常安装卸载,无必要的情况下可以不用调用此接口。

d.uninstall_ca_certificate(cert_path)

完整的代码如下(我们不再重复实例化 d 设备实例)

import os

# 拼接 mitmproxy-ca-cert.pem 文件的路径
HOME = os.path.expanduser("~")
cert_path = os.path.join(HOME, ".mitmproxy", "mitmproxy-ca-cert.pem")
# 以 mitmproxy 为例,使用如下代码安装证书
d.install_ca_certificate(cert_path)

# 使用如下代码卸载证书
d.uninstall_ca_certificate(cert_path)

此证书安装卸载接口是通用的,您可以用它安装任何应用要求您安装的证书,您同样可以用其安装 Fiddler/Charles 要求您安装的证书,只需要提供文件路径即可。如果您是要抓包,随后可以参考 设置代理 章节,将代理设置为中间人应用监听的地址即可。