【问题标题】:How to enable SSL in WebSocket with System.Net.HttpListener如何使用 System.Net.HttpListener 在 WebSocket 中启用 SSL
【发布时间】:2013-06-12 16:20:30
【问题描述】:

我在 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?

谢谢!非常感谢您的帮助...

最好的问候...

古腾堡

【问题讨论】:

    标签: c# azure websocket .net-4.5 httplistener


    【解决方案1】:

    好的,刚刚想通了。

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

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

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

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

    IPPORT 更改为您希望通过证书和 YOUR_CERT_HASH 保护的所需 IP 地址和端口号以及 您的证书的指纹(证书应该之前上传到 azure 门户中)和 GUID 以及您从任何 GUID 生成工具(如 Visual Studio 中的工具)生成的 GUID(工具 > 创建 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2016-05-21
      • 2013-12-13
      • 2011-07-01
      相关资源
      最近更新 更多