2013-12-09 48 views
4

我想創建具有使用Microsoft.Web.Administration庫(.NET Framework)檢查(服務器名稱指示)標誌SNI的IIS 8的綁定。以IIS編程方式添加綁定與SNI選項

這對我來說是必要的,因爲我想爲IIS下的同一個網站獲得多個SSL綁定,所有這些都只使用一個IP地址。這是IIS 8的主要新功能之一。

我一直在查看Binding類,找不到任何標誌或選項來表明它。

目前的Microsoft.Web.Administration v 7.0.0.0有可能嗎? 我需要一個我沒有找到的新版本嗎?

我知道7.9.0.0版本僅適用於IIS Express,並不是我的場景,所以我沒有看過它。

+0

幕後的更多技術細節可以在https://blog.lextudio.com/2015/05/whats-microsoft-web-administration-and-the-horrible-facts-you-should-know/找到不管你在一開始用什麼來獲取MWA組件,都應該堅持使用IIS提供的副本(就像你最終發現的那樣)。 –

回答

8

我終於成功地做到這一點使用從文件夾%windir%\system32\inetsrv\Microsoft.Web.Administration僅在Windows 8/Windows的2012IIS 8

這些庫的Add函數中有SslFlags選項用於BindingCollection類。沒有來自微軟的文檔,但對於這種新的過載,或者至少我沒有找到它。

SslFlags.Sni可用於這一個,並創建綁定與SNI檢查完美。

+0

現在有一個NuGet包(社區一):https://www.nuget.org/packages/IIS.Microsoft.Web.Adminstration/。不知道MS爲什麼不更新它。 – Mrchief

+0

@Mrchief,永遠不要使用NuGet包。您的應用程序應始終引用system32 \ inetsrv下安裝的計算機上的版本,並且絕對不要在本地複製它。 –

+0

@LexLi不幸的是,_practice_正在慢慢變得過時。 NuGet包和本地副本(bin deployables)是前進的方向! – Mrchief

3

是否可以使用當前的Microsoft.Web.Administration v 7.0.0.0?

確實是這樣,通過手動添加sslFlags屬性到<binding>節點:

Binding mySslBinding; 
bool enableSni; 

using (var serverManager = new ServerManager()) 
{ 
    ... create or get value of mySslBinding... 

    mySslBinding.SetAttributeValue("sslFlags", Convert.ToInt32(enableSni)); 

    serverManager.CommitChanges(); 
} 

注意,與任何版本的IIS早於8.0執行機器上的上述代碼將使CommitChanges()方法拋出異常,因爲sslFlags在這些版本中不存在。

+2

這樣做_may_導致進一步的問題:http://stackoverflow.com/questions/30536005 /設定服務器名稱管理指示-SNI通吃截止證書結合 – Mrchief

相關問題