首页 > 解决方案 > 问:mitmproxy - 在内部 NIC 上协商 TLS 降级?

问题描述

我对 mitmproxy 完全陌生,我正在通过文档工作,但我的管理层在选择要使用的代理时有一个特定的要求。具体来说,我们需要能够接受使用 TLS 1.3(当然还有 1.2)的传入(出站/面向外部)连接,但是在解密和检查之后,即使传入连接在 TLS 1.2 中,与服务器的后端连接也在1.3. 另一个要求是控制可以在任何一方协商的密码。有没有办法配置 mitmproxy 在这种非对称连接模式下工作?

我发现注释表明:

tls_version_client_max
mitmproxy mitmdump mitmweb  str Set the maximum TLS version for client connections.
Default: UNBOUNDED
Choices: UNBOUNDED, SSL3, TLS1_1, TLS1_2, TLS1_3

tls_version_client_min
mitmproxy mitmdump mitmweb  str Set the minimum TLS version for client connections.
Default: TLS1_2
Choices: UNBOUNDED, SSL3, TLS1_1, TLS1_2, TLS1_3

tls_version_server_max
mitmproxy mitmdump mitmweb  str Set the maximum TLS version for server connections.
Default: UNBOUNDED
Choices: UNBOUNDED, SSL3, TLS1_1, TLS1_2, TLS1_3

tls_version_server_min
mitmproxy mitmdump mitmweb  str Set the minimum TLS version for server connections.
Default: TLS1_2
Choices: UNBOUNDED, SSL3, TLS1_1, TLS1_2, TLS1_3

这似乎意味着我可以将客户端设置为 TLS1_2、TLS1_3 并将服务器端设置为 TLS1_2。这会实现我的目标吗?

标签: tls1.2mitmproxytls1.3

解决方案


默认情况下,mitmproxy 将尝试在两个连接上独立协商最高可用的 TLS 版本。这意味着如果您的客户端支持 TLS 1.3 而您的服务器仅支持 TLS 1.2,您将在客户端和代理之间建立一个 TLS 1.3 连接,在代理和服务器之间建立一个 TLS 1.2 连接。长话短说,您不需要进行任何更改。

您列出的选项允许您通过增加或降低所需的最低版本或限制最高版本来更改该行为(如果您想坚持使用支持 TLS 1.3 的服务器使用 1.2)。


推荐阅读