101
服務(wù)器(qì)多站(zhàn)點多域名HTTPS實現(xiàn)

假設有這(zhè)樣一(yī)個(gè)場(chǎng)景,我們有多個(gè)站(zhàn)點(例如(rú)site1.example.com,site2.example.com和site3.example.com)綁定到同一(yī)個(gè)IP:PORT,并區分(fēn)不同的主機頭。我們為(wèi)每一(yī)個(gè)SSL站(zhàn)點申請并安裝了(le)證書。在浏覽網站(zhàn)時(shí),用戶仍看到證書不匹配的錯誤。

IIS

當一(yī)個(gè)https的請求到達IIS服務(wù)器(qì)時(shí),https請求為(wèi)加密狀态,需要拿到相應的服務(wù)器(qì)證書解密請求。由于每個(gè)站(zhàn)點對應的證書不同,服務(wù)器(qì)需要通過請求中不同的主機頭來(lái)判斷需要用哪個(gè)證書解密,然而主機頭作(zuò)為(wèi)請求的一(yī)部分(fēn)也(yě)被加密。最終IIS隻好(hǎo)(hǎo)使用第一(yī)個(gè)綁定到該IP:PORT的站(zhàn)點證書解密請求,從而有可能(néng)造成對于其他站(zhàn)點的請求失敗而報(bào)錯。

解決方案

  • 第一(yī)種解決方案将每個(gè)https站(zhàn)點綁定到不同的端口。但(dàn)是這(zhè)樣的話(huà)客戶端浏覽網頁時(shí)必須手動指定端口,例如(rú) https://site.domain.com:444
  • 第二種解決方案是為(wèi)每個(gè)站(zhàn)點分(fēn)配一(yī)個(gè)獨立的ip,這(zhè)樣沖突就(jiù)解決了(le),甚至主機頭也(yě)不用添加了(le)。
  • 第三種解決方案是使用通配證書。我們采用通配證書頒發給.domain.com,對于我們的示例中,應該采用頒發給.marei.com的證書,這(zhè)樣任何訪問該domain的請求均可以通過該證書解密,證書匹配錯誤也(yě)就(jiù)不複存在了(le)。
  • 第四種解決方案是升級為(wèi)IIS8,IIS8中添加的對于SNI(Server Name Indication)的支持,服務(wù)器(qì)可以通請求中提取出相應的主機頭從而找到相應的證書。

SNI開啓方式請參考http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-server-name-indication-sni-ssl-scalability

這(zhè)條幫助是否解決了(le)您的問題? 已解決 未解決

提交成功!非常感謝您的反饋,我們會繼續努力做到更好(hǎo)(hǎo)! 很抱歉未能(néng)解決您的疑問。我們已收到您的反饋意見,同時(shí)會及時(shí)作(zuò)出反饋處理(lǐ)!