Iis

無法在 Windows Server 2012 上禁用 SNI

  • June 8, 2020

我有兩個不同的“家族”相關站點,每個站點在同一台伺服器上都有自己的 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而不是 for 10.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。其他動物站點仍設置為使用中央商店)。

引用自:https://serverfault.com/questions/683016