簡體   English   中英

如何使用System.Net.HttpListener在WebSocket中啟用SSL

[英]How to enable SSL in WebSocket with System.Net.HttpListener

我在Windows Azure上使用.Net 4.5和HttpListener類(輔助角色)制作自己的WebSocket服務器。 對於HTTP非安全連接,它可以很好地工作。 問題是我需要使用SSL(wss://)使WebSocket連接安全。

我一直在尋找,並且HttpListener類文檔和Internet(甚至在這里)都沒有對我有太大幫助。

我發現httpcfg.exe應該可以幫助我配置證書,但並不幸運。

所以,這是我的問題:

  1. 有什么辦法可以從我的代碼中啟用它嗎? 就像從商店讀取證書並以某種方式在HttpListener上設置它一樣?
  2. 如果沒有,httpcfg.exe是解決方案? 如果是,該如何使用?
  3. 如果1 ==否和2 ==是,如何在Azure中使用httpcfg?

謝謝! 我非常感謝您的幫助...

最好的祝福...

古登堡

好,剛想通。

由於HttpListenerHTTP.sys的包裝器,因此我們必須在開始使用HttpListener之前對其進行配置。

在Windows Vista之前的Windows版本上使用httpcfg.exe。 由於我使用的是.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更改為想要隨證書一起使用的安全的所需IP地址和PORT編號,並使用證書的指紋將證書更改為YOUR_CERT_HASH (該證書應事先上傳到Azure門戶中),並將GUID 更改為從任何GUID生成工具生成的GUID類似於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/zh-CN/library/ms733791.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM