如何通过具有TCPListener的服务器中继SSL HttpRequest

本文关键字:SSL HttpRequest 服务器 何通过 TCPListener | 更新日期: 2023-09-27 18:26:26

很抱歉标题不好,但基本上我想要实现的是有一个应用程序,它将使用TCPListener来等待传入连接,然后将这些连接转发到预期目的地。转发常规的Http请求很容易,但我需要采取哪些步骤才能"代理"HTTPS连接?

如何通过具有TCPListener的服务器中继SSL HttpRequest

如果不是源或目标,就无法读取HTTPS通信的内容。中间没有人可以窃听。所以,除非你事先知道目的地(比如说,如果有人设法将目标IP发送到带外),否则你就会陷入困境。

NITPICK编辑:这并不完全正确。你可以假装是目的地,干扰握手过程。您能够看到请求的内容,但用户将看到不正确的证书警告。

除非您对客户端有一些控制,否则我看不到"代理"https连接的方法。

  • 如果可以更改客户端的代理设置,您可以假装是SOCKS代理
  • 如果可以将新条目添加到客户端的主机文件中(就好像您是目的地一样),则可以绕过通信

但无法阅读会议内容。

理论上这其实很容易——你只需要知道完整的服务器证书和潜在的客户端证书(如果使用的话),就可以正确地实现双方的握手。

在实践中,除非您拥有SSL证书,否则您无法获得服务器的SSL证书,客户端证书也是如此。

我建议阅读Fiddler如何进行HTTPS解密的解释:http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp