Ssl
證書 SNI 和 IIS 主機標頭
上下文:配置了主機名標頭和 TLS 證書的 IIS 網站。
當客戶端啟動到指定站點的連接時,這是正確的流程嗎?
- 客戶端(瀏覽器)執行 DNS 查找
- 與伺服器建立 TCP 連接
- 客戶端(瀏覽器)建構 TLS 有效負載,其中包含作為站點名稱的 SNI,並開始與伺服器握手
- 伺服器在其證書的站點綁定列表中查找具有指定名稱的證書並做出響應
- 建立 TLS 後,IIS 網路伺服器使用 HOST 標頭值將 HTTP 請求路由到特定站點。
據我了解,SNI 是伺服器查找站點證書的基本資訊。
如果在 TLS 握手之後我實際上修改了 HTTP Host 標頭以針對不同的網站會發生什麼?這可能嗎 ?
由於客戶端可能在應用程序協議中提供不同的 server_name,因此依賴於這些名稱相同的應用程序伺服器實現必須檢查以確保客戶端沒有在應用程序協議中提供不同的名稱。
Web 伺服器實際執行此操作的方式可能會有所不同。Apache 和 nginx 都直接拒絕這樣的連接,儘管奇怪的是 Apache 可以選擇關閉它。不知道 IIS 做了什麼,但希望它是理智的。您可以輕鬆地自己測試它。