0

假设客户端 A(在我的例子中是一个 VM)想要连接到 https 服务器 D(例如 en.wikipedia.org)。客户端 A 只能通过(虚拟)套接字连接到服务器 B(在我的情况下是主机)。现在,在客户端机器上运行的软件通过 (v)socket 将传出的 TCP 请求重定向到 B。B 正在运行一个特殊的代理服务器,它将 (v)socket 上的传入流量转发到服务器 D。通过第二个 (v)套接字通道,A 告诉 B 将其代理指向哪个域。到目前为止,我已经完成了这项工作。

这是挑战:现在我希望 B 将流量转发给客户端 C。有两个原因:1)B 不应该知道 D 是谁(或 A 的 http 请求的任何其他部分),2)D 应该看到的 IP C,不是 B 的。

我们可以在 A 和 B 上运行任意代码,但我希望 C 的逻辑在浏览器中运行。我假设 B 和 C 必须通过 WebSocket 连接。目标是在通过 B 时加密所有内容(C 知道 A 的公钥,因此 A 和 C 可以建立 AES 机密)。那么 C 应该接收到发起 A 与 D 的 https/tls 握手所需的数据,并且 A 和 D 之间的流量是经过 B 和 C 的路由器。 C 和 B 一定不知道 A 和 D 之间的最终 TLS 秘密。

任何想法我可以使用哪些协议和工具来使这尽可能简单?

4

0 回答 0