设置 TCP-SNI 代理,将 SSL 流量动态转发到 SNI 可能包含的任何主机名

设置 TCP-SNI 代理,将 SSL 流量动态转发到 SNI 可能包含的任何主机名

我首先要总结一下我的目标:

我将设置一个 DNS 服务器并配置我的智能电视以使用它。我将设置 DNS 服务器,以便对特定 DNS 区域的请求实际上不会被解析,而是由 DNS 服务器返回我的代理服务器的 IP。代理服务器需要接受任何 HTTPS 请求、检查 SNI,并将请求转发到相应的主机。我无法静态配置代理应将传入请求传递给的主机,因为这些主机名是在特定 DNS 区域中“随机”(= 不受我控制)生成的。

到目前为止,我已经研究过 nginx 的 ngx_stream_ssl_preread_module 以及 HProxy。到目前为止,我还没有找到让它们代理将流量传递给 $requesthostname 的方法,似乎你总是需要指定将流量传递给的后端。

在使用 mitmproxy 检查本地计算机上的 HTTPS 流量时,我意识到它的行为符合我的期望,即它会将所有 HTTPS 请求转发到相应的主机名。但是,由于我无法在智能电视上安装 mitmproxy 的 CA 证书,因此我无法将其用于此目的。

是否有人知道可以满足我的目的的代理软件,或者知道如何配置我提到的代理服务器之一以使其以这种方式运行?

非常感谢您的帮助,提前致谢

答案1

在 nginx 中这似乎应该非常简单。

stream {
    server {
        resolver 8.8.8.8 8.8.4.4;
        proxy_pass $ssl_preread_server_name:443;
        ....

相关内容