在 Linux 上通过 mitmproxy 获取并信任根证书
在使用 mitmproxy 做流量拦截时,客户端会收到代理签发的自签证书。如果系统没有信任这个证书,就会出现如下报错:
Client TLS handshake failed. The client does not trust the proxy's certificate
本文将演示如何在 Linux 系统中通过命令行下载 mitmproxy 根证书,并安装到系统信任库,确保应用能够正常通过代理访问 HTTPS 网站。
1. 背景
当你使用 mitmproxy 作为 HTTP/HTTPS 代理时,它会自动生成一套自签名 CA,用于重新签发服务端证书。但客户端默认并不信任这套 CA,所以所有走代理的 HTTPS 请求都会因为 unknown ca 而失败。
解决办法就是把 mitmproxy 的根 CA 证书下载下来,并导入到系统信任库中。
2. 通过代理下载证书
mitmproxy 自带一个证书分发页面 http://mitm.it/
,你可以直接通过代理访问并获取证书。
假设 mitmproxy 运行在 192.168.157.1:8080,执行:
curl -x http://192.168.157.1:8080 http://mitm.it/cert/pem -o mitmproxy-ca-cert.pem
这条命令会通过代理请求 mitm.it
,代理会自动返回它自己的根证书,并保存为 mitmproxy-ca-cert.pem
。
3. 安装证书到系统信任库
下载完成后,将证书复制到系统的 CA anchors 目录,并刷新信任库:
mkdir -p /etc/pki/ca-trust/source/anchors/ cp mitmproxy-ca-cert.pem /etc/pki/ca-trust/source/anchors/mitmproxy.crt update-ca-trust extract
执行完成后,mitmproxy 的根证书就被系统全局信任了
已有10位网友发表了看法:
发表评论