2

我在 Windows Azure(一个工作者角色)上使用 .Net 4.5 和 HttpListener 类来制作我自己的 WebSocket 服务器。对于 HTTP 非安全连接,它工作得很好。问题是我需要使用 SSL(wss://) 来保护 WebSocket 连接。

我四处寻找,HttpListener 类文档和互联网(甚至在这里)都没有对我有太大帮助。

我发现 httpcfg.exe 应该可以帮助我配置证书,但不走运。

所以,这是我的问题:

  1. 有没有办法从我的代码中启用它?就像从商店读取证书并以某种方式将其设置在 HttpListener 上?
  2. 如果没有,httpcfg.exe 是解决方案吗?如果是,如何使用它?
  3. 如果 1 == No 和 2 == yes,我如何在 Azure 中使用 httpcfg?

谢谢!我真的很感谢你的帮助......

此致...

古腾堡

4

1 回答 1

4

好的,刚刚想通了。

由于HttpListenerHTTP.sys的包装器,因此我们必须在开始使用 HttpListener 之前对其进行配置。

httpcfg.exe 用于 Windows Vista 之前的 Windows 版本。由于我使用的是 .net 4.5 HttpListener WebSockets,并且它仅适用于Windows8/windows Server 2012(如果您尝试在 Windows 的 pre-windows8 版本上使用 websockets,您将获得PlattaformNotSupportedException),我们应该使用netsh实用程序而不是httpcfg

因此,要在 Windows 8 中配置 HTTP.sys,请打开 CMD 并向其中添加以下命令:

netsh http add sslcert ipport=IP:PORT certhash=YOU_CERT_HASH appid={GUID}

将IPPORT更改为您希望使用证书保护的所需 IP 地址和端口号,以及使用证书指纹(证书应先前上传到 azure 门户)和GUID以及您从任何 GUID 生成工具生成的 GUID 的YOUR_CERT_HASH就像 Visual Studio 中的那个(工具 > 创建 Guid)。

在它之后,你只需要设置HttpListener.Prefix.Add("https://youIP:youPort/yourPath"),你应该很好。

像我一样,有些人会问如何让它在Windows Azure上运行……您可以使用启动任务在您的角色启动之前运行此命令,并根据需要设置 HTTP.sys。

有关如何使用启动任务的更多信息,请查看 MSDN http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx上的此文档,有关httpcfgnetsh的更多详细信息,请查看此其他文档MSDN http://msdn.microsoft.com/en-us/library/ms733791.aspx

于 2013-06-16T18:15:47.913 回答