此错误通常是由于浏览器未完全信任 mitmproxy
证书导致的。以下是一些解决此问题的方法:
方法 1:确保证书完全受信任
确保根证书已正确安装并受信任:
Chrome 浏览器
- 打开 Chrome 浏览器,进入设置。
- 找到“隐私和安全”部分,点击“安全”。
- 在“高级”部分,找到并点击“管理证书”。
- 在弹出的“证书”窗口中,点击“受信任的根证书颁发机构”选项卡。
- 找到并选择
mitmproxy
的根证书,确保它的信任级别设置为“此证书颁发机构可用于识别网站”。
Firefox 浏览器
- 打开 Firefox 浏览器,进入设置。
- 在“隐私与安全”部分,找到并点击“查看证书”。
- 在“证书管理器”窗口中,点击“导入”,选择下载的根证书文件。
- 勾选“信任此证书以识别网站”,然后点击“确定”。
方法 2:检查操作系统中的证书安装
确保在操作系统中也正确安装了 mitmproxy
根证书:
Windows
- 打开证书管理器(运行
certmgr.msc
)。 - 导入根证书到“受信任的根证书颁发机构”。
- 确保证书被正确识别并受信任。
macOS
- 打开“钥匙串访问”。
- 从“文件”菜单中选择“导入项目”,导入下载的根证书。
- 找到导入的证书,右键单击并选择“获取信息”。
- 展开“信任”部分,将“使用此证书时”设置为“始终信任”。
Linux
将根证书复制到系统证书目录:
sudo cp mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/ sudo update-ca-certificates
方法 3:清除浏览器缓存和重启浏览器
有时候,浏览器缓存可能会导致证书问题。尝试清除浏览器缓存并重新启动浏览器。
方法 4:使用命令行选项运行 mitmproxy
确保以正确的方式运行 mitmproxy
,指定监听的端口:
mitmdump -s intercept.py --listen-port 8080
方法 5:调试证书问题
可以使用 openssl
工具来调试和检查证书问题:
openssl s_client -connect blog.csdn.net:443 -CAfile ~/.mitmproxy/mitmproxy-ca-cert.pem
查看输出的详细信息,确认证书链是否正确。
示例 intercept.py
脚本
确保您的 intercept.py
脚本内容如下:
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
# 拦截请求
print("Intercepted request:")
print(f"URL: {flow.request.pretty_url}")
print(f"Headers: {flow.request.headers}")
print(f"Content: {flow.request.content}")
def response(flow: http.HTTPFlow) -> None:
# 拦截响应
print("Intercepted response:")
print(f"URL: {flow.request.pretty_url}")
print(f"Status Code: {flow.response.status_code}")
print(f"Headers: {flow.response.headers}")
print(f"Content: {flow.response.content}")
总结
通过确保根证书正确安装和完全受信任,清除浏览器缓存,以及正确配置 mitmproxy
,应该能够解决浏览器不信任证书的问题。如果以上方法仍未解决问题,可以考虑重新安装根证书或联系相关支持人员以获得更多帮助。