【发布时间】:2020-05-15 09:27:53
【问题描述】:
我正在开发一个桌面 C++ 应用程序,它使用 OpenSSL 套接字(原始 TLS 套接字,不是 HTTPS)与我们的服务器通信。
我们的一个客户需要通过代理路由他们的流量。客户端在 Tunnel with Local Proxy 模式下使用 ZScaler。
理论上,可以重新配置 ZScaler 以强制我们的流量通过 ZScaler 选择的代理。但是,我想研究我们的应用程序使用 Windows 操作系统级别的代理设置而不是依赖 ZScaler 配置的解决方案。
我读过这篇文章: openssl s_client using a proxy
但我不确定这些答案是否适用于我的情况,因为该用户没有提及他们使用的是 Windows 还是 Linux,而且他们似乎在谈论 HTTP/HTTPS 代理。此外,这个问题似乎是在询问s_client 函数,而不是简单地通过 Windows 上的“带有本地代理的隧道”创建到我的服务器的 TLS 套接字。
所以,我的问题是:
可以使用 OpenSSL 通过带有本地代理的隧道打开 SSL 套接字吗?
我们能否进行操作系统调用以确定具有本地代理配置的隧道的 IP/套接字?
如果这是可能的,那么我还有另一个问题:假设我们在10.100.10.0:5000 有一个代理。
如果我们客户办公室的一个用户通过他们的代理打开一个到我们服务器的套接字,第二个用户是否会因为单个代理套接字的瓶颈而无法从他们的办公室连接? p>
换一种说法:使用 OpenSSL 为 Windows 应用程序实现代理感知的标准方法是什么?
注意:此问题最初发布到 Network Engineering stack exchange,但由于涉及 OSI 第 4 层以上的问题而被关闭。
注意:我正在寻找一种不需要在用户 PC 上需要管理员权限的解决方案。我希望我们的应用程序能够发现和使用操作系统级别的代理设置,而无需对机器进行任何管理更改,即调用netsh。
【问题讨论】:
标签: windows sockets proxy openssl