在啟用 IIS SNI 的站點上啟用 OCSP 裝訂
如果在 IIS 站點的綁定上選中“要求伺服器名稱指示”,則該站點的 OCSP 裝訂被禁用。
通過為目前不需要它的站點啟用 SNI 並使用https://www.ssllabs.com/ssltest/或 openssl 進行檢查,可以輕鬆確認這一點:
openssl s_client -connect foobar.com:443 -servername foobar.com -tls1 -tlsextdebug -status
是否有人對此有解決方法,以便啟用 SNI 的站點的客戶可以享受 OCSP 裝訂的好處?
EnableOcspStaplingForSni
在下創建一個 DWORD reg 值HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel\
並將其設置為非零值。
根據 Microsoft 的說法,由於潛在的性能問題,預設情況下禁用此行為。
要為 SNI 和 CCS 綁定啟用 OCSP 裝訂,請找到以下系統資料庫子項:
"EnableOcspStaplingForSni"=dword:00000001
在 系統資料庫路徑下:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]
Powershell 片段:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\" -Name "EnableOcspStaplingForSni" -PropertyType DWord -Value 1
Microsoft 參考文章,該文章涉及 windows 2012 伺服器,我對此進行了測試,它仍然適用於 2016 年。
OCSP 裝訂
線上證書狀態協議 (OCSP) 裝訂使 Web 伺服器(例如 Internet 資訊服務 (IIS))能夠在 TLS 握手期間向客戶端發送伺服器證書時提供伺服器證書的目前吊銷狀態。此功能減少了 OCSP 伺服器的負載,因為 Web 伺服器可以記憶體伺服器證書的目前 OCSP 狀態並將其發送到多個 Web 客戶端。如果沒有此功能,每個 Web 客戶端都會嘗試從 OCSP 伺服器檢索伺服器證書的目前 OCSP 狀態。這將在該 OCSP 伺服器上產生高負載。
預設情況下,對具有簡單安全 (SSL/TLS) 綁定的 IIS 網站啟用 OCSP 支持。但是,如果 IIS 網站使用以下類型的安全 (SSL/TLS) 綁定中的一種或兩種,則預設情況下不啟用此支持:
- 需要伺服器名稱指示
- 使用集中式證書儲存
在這種情況下,TLS 握手期間的伺服器 hello 響應預設不會包含 OCSP 裝訂狀態。此行為提高了性能:Windows OCSP 裝訂實現可擴展到數百個伺服器證書。由於 SNI 和 CCS 使 IIS 能夠擴展到可能具有數千個伺服器證書的數千個網站,因此將此行為設置為預設啟用可能會導致性能問題。
注意啟用此系統資料庫項具有潛在的性能影響。