無法在 Windows Server 2012 上禁用 SNI
我有兩個不同的“家族”相關站點,每個站點在同一台伺服器上都有自己的 UCC 證書。
我將它們託管在同一個 IIS 伺服器上,每個家庭使用一個 IP 地址。
兩個 UCC 證書均來自 GoDaddy。
每個綁定(針對 UCC 中的每個 SAN)都禁用了“需要伺服器名稱指示”。
但是,當我嘗試在 Windows XP 上從 IE 8 訪問該站點時,只有一個“家族”站點可以工作。另一個只是不談判。
在SSLLabs.com上分析 SSL 時,我得到以下結果 - 告訴我“該站點僅適用於支持 SNI 的瀏覽器。”
但這怎麼可能!我為每個 :443 綁定禁用了“需要 SNI”。
我什至查看了該
applicationHost.config
文件,沒有一個站點sslFlags="1"
表明此設置已啟用。是的,我還重新啟動了 IIS。這是怎麼回事。我很困惑。我想知道我是否可以以某種方式完全禁用伺服器上的 SNI,或者是什麼觸發了這種情況。昨天我進行了幾個月的 Windows 更新,但坦率地說,我認為這種方式已經持續了很長時間,而我沒有意識到 - 基於 IE8 XP 客戶端的 0 美元銷售額;-)
編輯: 我真的認為我的 IIS 已損壞。當我執行
netsh http show sslcert
每一個綁定的形式是 IP:port。根據這篇文章,如果啟用了 SNI,那麼我會看到hostname:port
並且我看不到這種格式的條目。系統資料庫中也沒有任何條目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslSniBindingInfo
- 但我確認如果我臨時添加 SNI 綁定,則會在此處創建一個新條目。IP:port : 10.0.0.2:443 Certificate Hash : d59a149e6678bc10d62093401c5b705cc23094be Application ID : {4dc3e181-e14b-4a21-b022-59fc669b0914} Certificate Store Name : My Verify Client Certificate Revocation : Enabled Verify Revocation Using Cached Client Certificate Only : Disabled Usage Check : Enabled Revocation Freshness Time : 0 URL Retrieval Timeout : 0 Ctl Identifier : (null) Ctl Store Name : (null) DS Mapper Usage : Disabled Negotiate Client Certificate : Disabled
我沒有提到的一件事是我正在使用IIS 集中證書儲存- 結果證明這很重要。
對於我的站點,讓我們假設它們是以下組(IP 是內部的並通過防火牆映射)。
Group A : red.com, blue.com, green.com (UCC certificate A) 10.0.0.1 Group B : cat.com, dog.com, mouse.com (UCC certificate B) 10.0.0.2
A 組是按照我的意願工作的組(沒有報告它需要 SNI)。B 組沒有在帶有 IIS 8 的 XP 上工作。
在我的證書儲存中,我有每個證書的多個副本(只是
pfx
文件系統中的文件)。
red.com.pfx
blue.com.pfx
green.com.pfx
等所有網站當我執行命令
netsh http show sslcert
時,結果發現只有一個 for10.0.0.1:443
而不是 for10.0.0.2:443
。這就是導致每個站點出現不同行為的原因。IP:port : 10.0.0.1:443 Certificate Hash : d4a17e3b57e48c1166f18394a819edf770459ac8 Application ID : {4dc3e181-e14b-4a21-b022-59fc669b0914} Certificate Store Name : My Verify Client Certificate Revocation : Enabled Verify Revocation Using Cached Client Certificate Only : Disabled Usage Check : Enabled Revocation Freshness Time : 0 URL Retrieval Timeout : 0 Ctl Identifier : (null) Ctl Store Name : (null) DS Mapper Usage : Disabled Negotiate Client Certificate : Disabled
為什麼這個 IP 顯示一個條目?我還在另一個網站上有一個額外的綁定,具有相同的證書,用於相同的 IP 地址(用於將非 SSL 重定向到 SSL)。
我猜 IIS 假設如果您使用的是集中式儲存,那麼您正在使用 SNI,因此它似乎隱含地報告它需要它 - 即使它確實不需要。
我以前可以
$$ finally $$通過更改我對組 B 的綁定之一以顯式引用證書而不是僅在商店中查找它來解決此問題。當然,在這樣做之後,
10.0.0.2:443
條目就會出現在netsh http show sslcert
列表中,並且該站點在 XP 中執行良好 :-)(我只需要這樣做
dog.com
。其他動物站點仍設置為使用中央商店)。