我创建了一个无需手动安装根证书即可捕获用它启动的进程的 HTTPS 流量的 Linux 工具。
原理是通过创建一个隔离的命名文件空间,挂载 /etc/resolv.conf 相关的 DNS 配置文件,使用一个自定义的 DNS 服务器来解析域名,让 HTTPS 请求转发到这个工具内置的 443 端口的服务上去。 为了通过启动的进程的证书验证,这个工具在首次运行时会自动生成一个自签名证书,并将其挂载到隔离空间的系统的受信任证书列表中,整个过程只影响进程的命名空间,对系统无污染。后面就是传统的 MITM 流程了。
为了方便让 Wireshark 不安装证书密钥也能实时预览 HTTPS 流量,还可以通过这个工具开启一个 HTTP 镜像,这样 Wireshark 只要捕获到这个 HTTP 镜像的流量就能实时预览 HTTPS 流量。
另外,代码基本都是通过 Claude Code 开发的,期间也用 gemini cli debug 了一下,我的主要角色是提供想法、测试、反馈、修正。