【问题标题】:.NET HttpListener/HttpWebRequest/HttpWebResponse and HTTPS.NET HttpListener/HttpWebRequest/HttpWebResponse 和 HTTPS
【发布时间】:2010-07-10 00:00:07
【问题描述】:

我使用 HttpListener 和 HttpWebRequest/Response 制作了一个简单的代理来编辑和记录 http 标头。一切都在 HTTP 上工作得很好,但 HTTPS 是另一回事,我在 MSDN 上阅读过,它说 HttpListener 和 HttpWebRequest/Response 可以通过 HTTPS 工作。显然是我做错了什么。

我让 IE 指向下面的前缀,但我似乎无法捕捉到请求。

string[] prefixes = new string[] { "http://127.0.0.11:8080/", "https://127.0.0.12:8081/" };

HttpListener listener = new HttpListener();
// Add the prefixes.
foreach (string s in prefixes)
{
    _listener.Prefixes.Add(s);
}

欢迎提供示例,我是 c# 新手! :)

【问题讨论】:

    标签: c# httplistener


    【解决方案1】:

    https:// 不能这样代理。 HTTPS(如RFC2818)使用 SSL/TLS 打开一个穿越代理的安全隧道。作为代理,您无权访问 HTTPS 内容,因为这将只是一个不透明的二进制加密 goop。

    您所期望的更像是基本上没有人使用的 SHTTP (RFC2660)。

    如果您想查看源自您计算机的 HTTPS 流量(例如,出于调试目的),您可以使用NetMon。但是,如果根据定义无法使用 HTTPS,则可以检查来自其他机器的所有流量的代理,这意味着您刚刚成功了中间人攻击。

    【讨论】:

      【解决方案2】:

      除了 Cylon Cat 所说的之外,还有FiddlerCore,它是 Fiddler 代理,但形式可以在您自己的应用程序中使用。它支持HTTPS。

      【讨论】:

        【解决方案3】:

        使用 .NET 框架实际上很容易做到这一点。如果你想做的是写一个中间人代理,比如提琴手。然后,您可以使用 SSLStream 轻松完成。使用您的代理的客户端会收到有关 SSL 证书无效的警告,但您仍然可以代理流量并对其进行检查。

        这是一个非常实用的(包括缓存!)代理服务器,它执行 https 终止而不是隧道(中间人)。代码项目:http://www.codeproject.com/KB/IP/HTTPSDebuggingProxy.aspx

        【讨论】:

          【解决方案4】:

          根据您要查找的内容,查看fiddler,这是一种广泛使用的 Web 调试代理。它确实处理 HTTPS。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-12-01
            • 1970-01-01
            • 2012-02-26
            • 2010-10-08
            • 2011-10-07
            • 2023-03-14
            • 1970-01-01
            • 2012-04-02
            相关资源
            最近更新 更多