Windows-Server-2008-R2

在 Windows Server 2008 R2 上的 IIS7 中分配 SSL 證書

  • March 12, 2016

我們想要一個 IIS 伺服器上有兩個 ssl 站點。我使用 IIS 為https://Django.mycompanyname.com:443生成了一個自簽名 ssl 證書

但是,我們還需要https://site2.Django.mycompanyname.com:443在同一台伺服器上。

如果不購買萬用字元 ssl 證書,這可能嗎?

從技術上講,這是可能的——它被稱為伺服器名稱指示

支持此功能的第一個 IIS 版本是 IIS 8.0(請參閱此處

在您的情況下,您需要將伺服器至少更新到 Server 2012 或使用能夠提供此功能的反向代理。

我建議使用 nginx 作為反向代理 - 這提供了額外的功能,如 HTTP2 支持和服務內容的整體性能提升(nginx 也在傳輸方面做了一些非常好的優化)


簡要說明此處實際發生的情況:

使用 SNI 時,加密連接的協商會以某種方式進行修改,即客戶端在連接開始時發送請求的主機名 - 因此較舊的客戶端不支持這一點。收到請求的主機名後,伺服器可以決定將哪個證書交給客戶端(當正確設置證書與請求的主機名匹配時)。

擁有一個不提供這種機制的伺服器,每個偵聽器只有一個可用的證書,並且這個證書被分發給任何正在連接的客戶端。因此,單個端點(由 IP:Port 定義)只能響應一個證書(和/或綁定到一個主機名)。

IIS7 不提供 SNI 功能。

這導致需要包含所有請求/提供的主機名的證書(由於主機/不同客戶的數量可能無法實現)或每個提供的 SSL/TLS 端點的唯一綁定(IP:埠)。

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