Dot-Net
支持 HTTPS 的 Httplistener
關於使 .NET HTTPListener 支持 HTTPS,似乎有很多令人困惑的資訊,有時甚至是相互矛盾的資訊。我的理解如下:
- 一個人的 C# 程式碼需要一個
https前綴(例如,https://*:8443),以便偵聽器了解它需要在此埠上服務 SSL 請求。- 實際的 SSL 握手發生在幕後,並由
http.sys(埋在 Windows 機器上的某個地方)處理。C# 程式碼不必顯式管理 SSL 握手,因為它發生在幕後。- 需要在機器上擁有“X.509 受信任證書”
httpListener,並且該證書需要以某種方式綁定到埠 8443(在此範例中)。我上面的理解正確嗎?如果沒有,請教育我。
關於 X.509 證書,我的理解是:
- 用於
makecert創建 X.509 證書。此證書儲存在個人儲存中,需要轉移到受信任的儲存(這是 HTTP 偵聽器將查看的位置)。看來我可以certMgr用來執行移動,或者我可以mmc用來實現移動。似乎有不止一種 X.509 證書格式(DER,Base64,pks, pswd protected,pksprivate 等)…有我應該使用的首選格式嗎?將證書放入可信儲存後,我需要將其綁定到 TCP 埠。我在 Windows 7 上:我應該使用
httpcfg還是netsh?
我做了一堆功課並得到了這個工作。為 .NET HttpListener 添加 SSL 支持的步驟如下:
- 更新 C# 應用程式碼以包含
https前綴。例子:String[] prefixes = { "http://*:8089/","https://*:8443/" };從程式碼方面來說就是這樣。 2. 對於證書方面,使用Windows SDK命令控制台或 Visual Studio Professional 命令控制台
- 用於
makecert.exe創建證書頒發機構。例子:makecert -n "CN=vMargeCA" -r -sv vMargeCA.pvk vMargeCA.cer用於`makecert.exe`創建 SSL 證書kecert -sk vMargeSignedByCA -iv vMargeCA.pvk -n "CN=vMargeSignedByCA" -ic vMargeCA.cer vMargeSignedByCA.cer -sr localmachine -ss My使用 MMC GUI 在 Trusted Authority 儲存中安裝 CA 使用 MMC GUI 在個人商店中安裝 SSL 證書 將證書綁定到`IP address:port`應用程序。例子:tsh http add sslcert ipport=0.0.0.0:8443 certhash=585947f104b5bce53239f02d1c6fed06832f47dc appid={df8c8073-5a4b-4810-b469-5975a9c95230}rtash 是您的 SSL 證書的指紋。您可以使用 mmc 找到它。appid 在 Visual Studio 中找到...通常在 assembly.cs 中,查找 GUID 值。 可能還有其他方法可以完成上述操作,但這對我有用。