本文說明如何在具有共享組態的 Microsoft 網際網路資訊服務 (IIS) 多個網站上設定安全套接字層 (SSL)。
原始產品版本:網際網路資訊服務 7.0、7.5
原始 KB 編號: 2548832
摘要
假設您想要為兩部 IIS 伺服器設定共用組態。 為了此範例的目的,它們會命名為 伺服器 A 和 伺服器 B。您將有兩個不同的網站,這裡名為 Site1 和 Site2。 這兩個網站都會使用自己的專用IP位址,如下所示:
伺服器 A --> Site1 --> 10.10.10.1
伺服器 A --> Site2 --> 10.10.10.2
伺服器 B --> Site1 --> 10.10.10.3
伺服器 B --> Site2 --> 10.10.10.4
現在,您會設定 伺服器 A 和 B 進行共享設定,不過您在網站系結方面遇到獨特的的情況。 網站系結組態通常看起來像在 applicationHost.config 檔案中的下列範例:
<site name="Site1" id="1">
<application path="/" applicationPool="Site1">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="10.10.10.1:www.contoso.com" />
<binding protocol="https" bindingInformation="10.10.10.1:443:" />
</bindings>
</site>
如您所見,沒有任何內容會依其名稱來識別網頁伺服器(例如 伺服器 A)。 因此,當您將 Site1 系結至伺服器 A 上的 10.10.10.10.1 時,也會復寫伺服器 B 的這些設定。但伺服器 B 的 NIC 卡無法辨識 10.10.10.1 IP 位址。 事實上,您想要在伺服器 B 的埠 443 和 80 上將 10.10.10.3 系結至 Site1。
若要克服這種情況,您必須手動為每個網站新增額外的系結。 例如,您必須在伺服器 A 上新增 IP 10.10.10.3 和埠 443 的其他系結,即使伺服器 A 不瞭解 10.10.10.3。 這很好,因為伺服器 A 上的 IIS 會在啟動時忽略該 IP,因為它找不到該 IP。 您可以使用下列appcmd.exe命令來新增此系結:
appcmd.exe set site /site.name:Site1 /+bindings.[protocol="https",bindingInformation="10.10.10.3:443:"]
注意
IIS 管理員使用者介面不會讓您針對 HTTPs 執行此動作;您必須使用 appcmd.exe 工具。
當您使用 appcmd.exe 新增此系結之後,applicationHost.config 檔案中的新組態看起來會如下所示:
<site name="Site1" id="1">
<application path="/" applicationPool="Site1">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="10.10.10.1:www.contoso.com" />
<binding protocol="https" bindingInformation="10.10.10.1:443:" />
<binding protocol="https" bindingInformation="10.10.10.3:443:" />
</bindings>
</site>
請記住,您尚未將實際憑證指派給此網站。 您剛新增埠 443 的IP系結。 您現在可以使用 IIS 管理員 UI 指派現有的憑證。 如需如何執行的詳細資訊,請參閱 如何在 IIS 7 上設定 SSL。
指派憑證之後,專案將會在http.sys中設定,而且您可以從命令提示字元使用下列 NETSH 命令來檢視這些專案:
netsh http show sslcert
同樣地,請遵循上述步驟和邏輯,將其餘的網站和憑證新增至其餘伺服器。 SSL 憑證信息永遠不會儲存在 applicationHost.config 檔案中。 計算機是本機計算機,而且伺服器 A 系統管理員必須負責在伺服器數位中使用共用組態的所有伺服器上匯出和匯入正確的憑證。