如何在IIS中設置通配證書(wildcard certificate)來避免證書匹配錯誤


網上有很多文章介紹在某些情況下通配證書的必要性,但是如何在IIS中配置通配證書卻少有人提及,因為對於通配證書的需求普遍存在,我們在這篇文章中來介紹一下如何在IIS中配置通配證書來避免證書匹配錯誤。

背景

假設有這樣一個場景,我們有多個站點(例如site1.marei.com,site2.marei.com和site3.marei.com)綁定到同一個IP:PORT,並區分不同的主機頭。我們為每一個SSL站點申請並安裝了證書。在瀏覽網站時,用戶仍看到證書不匹配的錯誤。

問題原因

當一個https的請求到達IIS服務器時,https請求為加密狀態,需要拿到相應的服務器證書解密請求。由於每個站點對應的證書不同,服務器需要通過請求中不同的主機頭來判斷需要用哪個證書解密,然而主機頭作為請求的一部分也被加密。最終IIS只好使用第一個綁定到該IP:PORT的站點證書解密請求,從而有可能造成對於其他站點的請求失敗而報錯。

解決方案

對於該問題有多種解決方案
1. 第一種解決方案將每個https站點綁定到不同的端口。但是這樣的話客戶端瀏覽網頁時必須手動指定端口,例如https://site.domain.com:444
2. 第二種解決方案是為每個站點分配一個獨立的ip,這樣沖突就解決了,甚至主機頭也不用添加了。
3. 第三種解決方案是使用通配證書。我們采用通配證書頒發給*.domain.com,對於我們的示例中,應該采用頒發給*.marei.com的證書,這樣任何訪問該domain的請求均可以通過該證書解密,證書匹配錯誤也就不復存在了。
4. 第四種解決方案是升級為IIS8,IIS8中添加的對於SNI(Server Name Indication)的支持,服務器可以通請求中提取出相應的主機頭從而找到相應的證書。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-server-name-indication-sni-ssl-scalability

如何在IIS7中配置通配證書

1. 將證書安裝到IIS7服務器
2. 在IIS管理器中,設置443綁定,site1.marei.com在下面的示例中的主機名。

3. 通過管理員打開命令提示符具,轉到%SYSTEMDRIVE%\WINDOWS\system32\inetsrv目錄
執行以下命令來添加對於其他站點的綁定

appcmd set site /site.name:"<IIS站點名稱>" /+bindings.[protocol='https',bindingInformation='<IP>:443:<主機頭>']

4. 在IIS中,可以查看綁定,但注意不能做任何改動,否則綁定設置將被重置。任何更改都需要通過APPCMD


5. 測試創建的https://網站,可以看到網站可以成功訪問,證書錯誤不再出現。

 


希望以上步驟對你有所幫助。


Matthew Reid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM