【发布时间】:2012-03-01 20:35:50
【问题描述】:
抱歉标题不佳,但基本上我想要实现的是有一个应用程序,它将使用 TCPListener 等待传入连接,然后将这些连接转发到它们的预期目的地。转发常规 Http 请求很容易,但我需要采取哪些步骤才能“代理”HTTPS 连接?
【问题讨论】:
标签: c# ssl proxy tcplistener
抱歉标题不佳,但基本上我想要实现的是有一个应用程序,它将使用 TCPListener 等待传入连接,然后将这些连接转发到它们的预期目的地。转发常规 Http 请求很容易,但我需要采取哪些步骤才能“代理”HTTPS 连接?
【问题讨论】:
标签: c# ssl proxy tcplistener
如果不是源或目标,您就无法读取 HTTPS 通信的内容。中间的任何人都无法窃听。因此,除非您事先知道目的地(例如,如果有人设法将目标 IP 带外发送给您),否则您将陷入困境。
NITPICK 编辑:这并不完全正确。您可以假装是目的地并干扰握手过程。您将能够看到请求的内容,但用户会看到不正确的证书警告。
【讨论】:
除非您对客户端有一定的控制权,否则我看不到“代理”https 连接的方法。
但是无法读取会话的内容。
【讨论】:
理论上这实际上很简单——你只需要知道完整的服务器证书和潜在的客户端证书(如果使用的话),而不是正确地实现双方的握手。
实际上 - 除非您拥有它,否则您无法获得服务器的 SSL 证书,客户端证书也是如此。
我建议阅读 Fiddler 如何进行 HTTPS 解密的说明:http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp
【讨论】: