iis 配置多域名,多https
當一個https的請求到達IIS服務器時,https請求為加密狀態,需要拿到相應的服務器證書解密請求。由於每個站點對應的證書不同,服務器需要通過請求中不同的主機頭來判斷需要用哪個證書解密,然而主機頭作為請求的一部分也被加密。最終IIS只好使用第一個綁定到該IP:PORT的站點證書解密請求,從而有可能造成對於其他站點的請求失敗而報錯。
解決方法如下:
- 第一種解決方案將每個https站點綁定到不同的端口。但是這樣的話客戶端瀏覽網頁時必須手動指定端口,例如 https://site.domain.com:444
- 第二種解決方案是為每個站點分配一個獨立的ip,這樣沖突就解決了,甚至主機頭也不用添加了。
- 第三種解決方案是使用通配證書。我們采用通配證書頒發給.domain.com,對於我們的示例中,應該采用頒發給.marei.com的證書,這樣任何訪問該domain的請求均可以通過該證書解密,證書匹配錯誤也就不復存在了。
- 第四種解決方案是升級為IIS8,IIS8中添加的對於SNI(Server Name Indication)的支持,服務器可以通請求中提取出相應的主機頭從而找到相應的證書。
方案分析:
方案1明顯不太現實,我們不能讓用戶在訪問我們的網站時還要指定端口號,一來不太好記,二來用戶體驗不好;
方案2雖然可行,但由於我們使用的是阿裏雲的服務器,是固定IP,沒辦法再給服務器再分配一個IP,故該方案不適合我們的場景;
方案3雖然可行,但我們使用的是域名型SSL證書,而且要購買通配型SSL證書的話,價格也比較貴,故該方案不適合我們的場景;
方案4,我們使用的服務器安裝的操作系統是Windows Server 2012 R2,而該系統預裝的就是IIS8,不是IIS8的可以自行升級為IIS8,在IIS8中,因為添加了對SNI的支持(具體概念及原理,讀者可自行查閱相關資料,這裏就不多說),所以可以很方便的解決我們所面臨的問題。
現在就方案4做一下具體使用說明:
安裝服務器證書,進入IIS,點擊主機名,選擇服務器證書,如下圖:
點擊右側導入,如下圖:
選擇自己的證書文件,確定即可:
添加網站綁定,如下圖
註意:類型選擇https,端口號輸入443,主機名填寫自己的域名,“需要服務器名稱只指示”前面的勾選框必須勾選,這個是解決問題的關鍵,SSL證書選擇自己網站的證書(這裏的選項是之前導入的證書);
6.確定後,該網站SSL證書綁定成功,可以使用https訪問該網站,同樣的方式,你需要配置另外一個網站(PS:除過主機名和SSL證書不一樣外,其他配置都是一樣的);
7.至此,兩個網站都已配置成可以使用https訪問;
8.測試是否成功:瀏覽器地址欄輸入你要訪問的地址:如https://www.domain.com,
如果瀏覽器中兩個網站地址欄呈現類似以下狀態,則配置成功:
如果一步一步操作到這裏,那麽恭喜你,你已經解決了這個問題。
iis 配置多域名,多https