.NET HttpListener - 当浏览器代理设置为“https://*.8080”时监听没有流量?

4
背景 - 我可以很好地使用HttpListener处理HTTP流量。但是,我在处理HTTPS流量时遇到了问题。
问题:如何更改以下代码,以便浏览器对“https” URL的请求实际上被我的HttpListener捕获?
说明 - 目前,使用Firefox的代理设置为“localhost:8080”时,当我在端口8080上监听流量(“https:// *:8080 /”),并在Firefox中输入HTTPS URL时,我没有捕获任何流量? (当我只监听http并输入正常的http url时,它可以正常工作)
  _httpListener = new HttpListener();
  _httpListener.Prefixes.Add("https://*:8080/");
  _httpListener.Start();

谢谢

3个回答

5

来自 MSDN

如果您使用https创建HttpListener,则必须为该侦听器选择服务器证书。否则,对此HttpListener的HttpWebRequest查询将因连接意外关闭而失败。

您可以使用HttpCfg.exe配置服务器证书和其他侦听器选项。有关更多详细信息,请参见http://msdn.microsoft.com/library/default.asp?url=/library/en-us/http/http/httpcfg_exe.asp。该可执行文件随Windows Server 2003一起提供,或者可以从Platform SDK中提供的源代码构建。

不过不是100%确定...


有趣 - 我真的想只是获取请求,然后将其“复制”到一个新请求中(作为代理本身)。还有其他人能够确认/否认迈克尔的想法吗? - Greg
这并不像 HTTP 那么简单。你的客户端(浏览器)将使用 443 端口与服务器建立连接,然后检索证书信息。请求的格式将如下所示:CONNECT localorglobal.com:443 HTTP/1.0。服务器将回复 HTTP/1.0 200 Connection established,并在客户端和服务器之间传输二进制加密数据。 - Pablo
哦...好的...那么一个独立的HttpListener监听443端口可以处理这个吗?看起来你构建的监听器需要知道如何处理证书等,或者HttpListener会为你处理这些吗?换句话说,在.NET C#代码中模拟Web服务器通常处理SSL设置阶段的最简单方法是什么? - Greg
PS. 刚刚注意到一个 CodePlex 上的 Web 服务器 C# 项目 http://webserver.codeplex.com/ - 或许答案就埋藏在其中的一些代码里? - Greg
2
不,你不能在443上监听并处理此内容,除非你自己实现SSL堆栈 :) 你可能还想查看这篇MSDN文章:http://blogs.msdn.com/jpsanders/archive/2009/09/29/walkthrough-using-httplistener-as-an-ssl-simple-server.aspx - Pablo

0

听起来像是Firefox可能没有按照您的期望代理HTTPS流量。您的HTTPS请求是否实际在浏览器中呈现(即使在HTTPListener中没有显示任何流量)?

确保您的Firefox浏览器设置为将SSL代理到与HTTP相同的位置,否则请确保选中“对所有服务器协议使用此代理”框。


实际上浏览器保持空白 - 我已将Firefox代理设置为“对所有服务器协议使用此代理”。 - Greg
好的,那么像Michael所建议的那样,问题可能出现在监听器上。我以前遇到过.NET代码的证书问题;当您遇到证书问题时,它往往会默默地失败,并让您想知道发生了什么。您绝对需要一个服务器端证书才能进行SSL。 - KP Taylor
好的,所以只是普通的服务器类型SSL证书,就像您会放在网站上的那种证书?您知道是否可以在XP PC上生成一个证书吗?(即不是Windows Server) - Greg
是的,您可以创建自签名证书(如果需要帮助,请搜索“自签名证书”),并且您还需要将其设置为计算机上的受信任证书(否则.NET框架会因安全原因阻止它)。 - KP Taylor
谢谢 - 你知道这些证书和HttpListener是否足以处理我正在尝试做的事情吗?还是我需要编写自己的代码来获取证书信息,响应Ssl设置请求等? - Greg
是的,应该是这样的。快速搜索谷歌可以找到几个步骤指南,可能会对您有所帮助;我最喜欢这个:http://blogs.msdn.com/jpsanders/archive/2009/09/29/walkthrough-using-httplistener-as-an-ssl-simple-server.aspx - KP Taylor

0

如果通过该端口,请检查FW设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接