簡體   English   中英

為自托管WCF服務啟用SSL綁定

[英]Enable SSL binding for self-hosted WCF service

我運行了一個自托管的WCF服務,該服務要使用自簽名SSL證書進行保護。 為此,我需要將此SSL證書與特定端口綁定。 有幾種方法可以做到:

  1. 根據此http://msdn.microsoft.com/zh-cn/library/ms733791.aspx,我可以使用netsh並且可以使用它,但是我希望不依賴netsh,並且可以執行.NET代碼中的所有操作。

  2. 因此,我找到了以下代碼段:

      using (ServerManager manager = new ServerManager()) { Site site = manager.Sites.FirstOrDefault(i => i.Applications.Cast<Application>().Any()); Application app = site.Applications.Cast<Application>().First(); site.Bindings.Add(":*:PORTN", cert.GetCertHash(), store.Name); manager.CommitChanges(); } 

它可以工作,但是這需要安裝IIS。 否則,我得到以下異常:

由於以下錯誤,無法為具有CLSID {2B72133B-3F5B-4602-8952-803546CE3344}的組件檢索COM類工廠:80040154未注冊類(HRESULT的異常:0x80040154(REGDB_E_CLASSNOTREG))。

因此,問題是-有什么方法可以在托管代碼中完成此任務,而不必安裝IIS?

找到了我的問題的正確答案: 以編程方式將SSL證書綁定到端口

而不是使用諸如ServerManager類的托管類,我需要依靠P / Invoking本機API(例如HttpSetServiceConfiguration

有什么方法可以在托管代碼中完成此操作,而不必安裝IIS?

是的,並且假設您正在作為具有足夠特權的服務運行,可以使用Process.Start和WaitForExit調用NETSH來根據需要進行允許和禁止,並且可以實現您的問題。

NETSH的命令行語法http://technet.microsoft.com/zh-cn/library/cc725882(WS.10).aspx允許您執行所需的所有操作。

如果您想弄清楚所有P / Invoke,但這聽起來很麻煩,但這聽起來像是學術練習,有更多的內存泄漏風險,等等。

如果您在Windows XP上運行,並且擔心NETSH無法滿足您的需要,那么您也可以在此處獲得Microsoft的HTTPCFG, 網址為http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa364478%28v= vs.85%29.aspx

暫無
暫無

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

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