支持SSL的HttpListener无法从远程计算机获取任何连接

时间:2016-05-24 09:59:56

标签: c# ssl https httplistener

我正在尝试创建一个支持SSL的简单Web服务器。我正在尝试使用HttpListener。这就是我所拥有的:

  • 我制作了根CA证书并将其存储在“受信任的根证书颁发机构”商店
  • 我从根证书中获取了服务器身份验证证书,并将其存储在个人存储中
  • 我使用'netsh http add sslcert ...'命令将证书绑定到我的应用程序和端口。
  • 我还将我的根CA证书存储在另一台计算机的受信任的根证书授权存储中。

以下是我使用的一些代码:

private void StartServer()
{
    HttpListener server = new HttpListener();
    server.Prefixes.Add("http://+:8080/");
    server.Prefixes.Add("https://+:8081/");
    server.Start();
    server.BeginContext(HandleRequestCallback, server);
}

private void (HandleRequestCallback(IAsyncResult ar)
{
    HttpListener server = ar.AsyncState as HttpListener;
    server.BeginGetContext(HandleRequestCallback, server); // Start listening again.
    HttpListenerContext context = server.EndGetContext(ar);
    HttpListenerRequest request = context.Request;
    ProcessRequest(request);
}

这是有效的:

  • 来自本地计算机的普通http请求
  • 来自本地计算机的安全https请求(我在Chrome中获得绿色锁定符号)
  • 来自远程计算机的普通http请求

什么不起作用是来自远程机器的安全https请求。连接只是超时。 VS中的调试显示HandleRequest方法没有被命中。还在玩Fiddler,在这种情况下,我看不到任何传入的网络流量。

我也使用TcpListener(和SslStream)制作了类似的解决方案,并且我确实从远程计算机获得了安全连接。所以它不是防火墙问题......

其他人是否遇到此问题?是否有人可以指出我缺少的东西?

0 个答案:

没有答案