Ssl

無需為同一 IP 上的多個 SSL 站點啟用 SNI,但使用相同的萬用字元證書?

  • October 18, 2018

我有一個 IIS 伺服器託管:

example.com/www.example.com

sub1.example.com

sub2.example.com

它們在 IIS 下被列為 3 個單獨的站點,都通過 HTTPS 在 443 上綁定到相同的 IP。但它們都使用相同的 SSL 證書,這是一個覆蓋 *.example.com 的萬用字元證書

在這種情況下,我的理解是 SNI 不是必需的,因為伺服器為任何請求提供的任何證書(相同的證書)都將適用於所有站點,對嗎?我自己測試了它,它似乎可以工作,但我只是想確保這樣做不會對某些使用者造成任何意外的不良結果(如果可能,我不想使用 SNI,因為我確實希望 Windows XP 支持這些網站)

出於好奇,我確實想知道您何時有這樣的設置(多個站點通過 SSL 在同一個 IP 但未啟用 SNI),IIS 究竟如何決定提供哪個證書(IP 上的第一個 443 綁定?或者最後一個用過?)

此外,如果此設置有效,將來如果我將 example.org 添加到同一 IIS 伺服器並使用不同的 SSL 證書,我是否可以僅為 example.org 啟用 SNI 而不會影響其他 3 個站點?

經驗法則是,在 HTTP API 級別,

  • 您可以將單個證書綁定到 IP:443 作為基於 IP 的映射。
  • 您可以將證書綁定到 domain:443 作為 SNI 映射。

此類映射可以通過Jexus Manager進行視覺化分析。

當 SSL/TLS 握手開始時,將首先掃描 SNI 映射以匹配請求中的主機名(來自 SNI 感知瀏覽器)。如果沒有 SNI 映射匹配,則掃描基於 IP 的映射。這就是解決的順序。

當您在 IIS 管理器中配置站點時,將創建和更新映射。但是,HTTP API 中的此類映射與 IIS 配置是分開的。即使 IIS 中的站點被刪除,它們也可能存在。

在您的情況下,由於您只有萬用字元證書,因此在 IIS 管理器中配置多個站點不會覆蓋基於 IP 的映射,並且應該可以正常工作。

但是,當您嘗試使用另一個證書配置第二個域時,您不能使用相同的 IP 地址(因為該 IP:443 映射已經存在)。如果您強制在 IIS 管理器中進行配置,則應覆蓋以前的證書。當然,此時可以使用 SNI 映射。

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