IIS 7 如何架設多個SSL網站

IIS7 可以像 apache 的 virtual host 一樣,使用一個IP同時建立多個網站。但是如果是使用SSL時,就會發生問題,443埠被佔用了,一個網站開了,其它用SSL的就會自動關閉。

web伺服器之王,apache,可以用這樣的方式去架設多個web伺服器:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

引用自:http://httpd.apache.org/docs/2.2/vhosts/name-based.html

就是說,當你用不同的網站名稱做連結時,它會自動判斷是要用哪一個設定去做對應,你用www.domain.tld,那就讀取 /www/domain裡面的網頁,你用www.otherdomain.tld,那就去讀/www/otherdomain裡的網頁,而這兩個網站,www.domain.tld跟www.otherdomain.tld其實是使用同一個IP。

IIS當然也有這種功能,在網站上按右鍵,

1

 

然後選「編輯繫結」,

1

再選擇「編輯」,

1

這裡的「主機名稱」欄位,就是讓你填網站名稱的地方啦。

但是呢,如果你在前一個畫面按下「新增」,類型選擇「https」,

1

 

很奇怪的主機名稱就不能輸入了。而此時因為連接埠指定了443,當你設定另一個網站的https連線時,它也是443,因此兩個在搶同一個埠。

要改必須去改IIS的設定檔,修改的方法如下:

首先要把IIS停止。

用記事本打開 C:\Windows\system32\inetsrv\config\applicationHost.config

(不知為何,我用UltraEdit打開是一片空白)

找一下內容,會看到長的像這樣的設定內容:

<site name=”web1″ id=”2″>
<application path=”/” applicationPool=”web1″>
<virtualDirectory path=”/” physicalPath=”D:\Web1″ />
</application>
<bindings>
<binding protocol=”http” bindingInformation=”*:80:web1.mlab.tw” />
<binding protocol=”https” bindingInformation=”*:443:” />
</bindings>
</site>

有沒有看到https? 那個 * 是表示IP位址未指派,443是埠號,冒號後面什麼都沒有,就是表示沒有主機名稱,那我們就加進去吧。

<binding protocol=”https” bindingInformation=”*:443:web1.mlab.tw” />

存檔,啟動IIS即可。

兩個SSL網站使用同一個憑證是可行的,但是較好的方式是使用wildcard SSL certificate,也就是萬用網域憑證,像是 *.mlab.tw 這樣的憑證,但是如果是自己要做實驗用的話,就省了這筆錢吧~

參考資料:

http://rritw.com/a/bianchengyuyan/ASP/20110425/84005.html

http://www.magg.com.tw/blog/?p=602

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *