隨着虛擬主機技術的發展,功能愈來愈豐富,已經不只僅只是知足我的網站的須要,愈來愈多的小型電子商務網站也採用了虛擬主機來建站,如何爲這些商戶提供經濟、方便的SSL解決方案,成爲虛擬主機供應商的業務新增加點。html
爲何我不能在相同IP地址下多個域名的虛擬主機上使用SSL?api
這個問題十分專業,有些像「先有雞仍是先有蛋」的問題。SSL協議層是在HTTP協議層下面的,當SSL鏈接創建時,SSL模塊在Web模塊以前和 瀏覽器進行通信並交換證書、創建加密隧道。衆所周知,Web服務器是經過HTTP數據包中的」Host」字段來區分虛擬主機的。而SSL模塊在把服務器證 書發送到瀏覽器時,尚未收到任何關於HTTP的數據包,更不知道虛擬主機的域名,所以SSL模塊只能固定的將一張SSL證書發送到瀏覽器,而不能根據域 名有選擇性的發送證書。所以,您沒法在一個IP地址的默認SSL 443端口下爲多個虛擬主機配置多張證書。瀏覽器
因爲一個IP與一個端口號只能對應一張證書,所以咱們能夠採用如下方式來解決:安全
一、爲須要SSL加密的虛擬主機配置不一樣的IP地址,端口號都使用443。例如: www.domain1.com 的SSL使用 202.96.101.1:443 www.domain2.com的SSL使用 202.96.101.2:443,經過 https://www.domain1.com 和 https://www.domain2.com 訪問這2個SSL網站了服務器
二、若是隻有一個IP地址,能夠爲多個網站配置不一樣的SSL端口。例如: www.domain1.com 的SSL使用 202.96.101.1:443 www.domain2.com的SSL使用 202.96.101.1:1000,經過 https://www.domain1.com 和 https://www.domain2.com:1000 訪問這2個SSL網站了負載均衡
若是多個虛擬主機是1個主域名下的多個子域名,狀況發生了轉變,由於你能夠申請通配符SSL證書。dom
例如: 有2個虛擬主機 abc.domain.com、xyz.domain.com,你申請一張 *.domain.com的證書,按照前面所說的原理,2個虛擬主機都使用同一個IP和默認的443端口,當瀏覽器訪問IP:443端口時,SSL模塊把 通配符SSL證書傳送給瀏覽器,創建合法的SSL隧道,而後WEB模塊接收到HTTP數據包時判斷域名選擇虛擬主機。網站
原理是OK的,不幸的是你沒法按照這個原理對IIS進行配置,IIS不支持SSL端口配置域名。若是僅依靠IIS,你不得不使用上面的2個方法(不一樣的IP地址或者不一樣的端口號)。ui
若是僅有1個IP地址,採用方法2時,abc.domain.com 使用 443端口、xyz.domain.com使用1000端口,你會發現一個現象,因爲SSL端口不區分域名,所以 https://abc.domain.com仍是https://xyz.domain.com都是指向abc.domain.com網站內容,而 https://abc.domain.com:1000仍是https://xyz.domain.com:1000都是指向 xyz.domain.com網站內容的。固然這也有好處,你能夠在abc.domain.com下放一個程序,程序判斷一下域名,若是用戶訪問 https://xyz.domain.com就立刻跳轉到https://xyz.domain.com:1000,不會有任何的安全警告。加密
幸運的是,經過SSL反向代理服務器,你能夠解決這個問題。就是使用第三方的SSL模塊來替代IIS處理SSL加密,將證書安裝反向代理服務器中, 瀏覽器訪問SSL反向代理服務器,而後反向代理服務器使用HTTP協議訪問你的Web服務器。你能夠選擇SSL反向代理硬軟件有: 一、支持SSL的負載均衡器,如F五、ArrayNetworks
二、使用ISA Server 2004軟件。
三、使用免費的Squid軟件。
四、使用免費的Stunnel軟件。
五、使用PortTunnel軟件。
咱們推薦虛擬主機服務商採用:(RapidSSL),由於它具備: • 高性價比: RapidSSl證書價格便宜,考慮到租用虛擬主機的客戶對價格相對敏感,這款證書是最有吸引力的。 • 申請便捷: 經過GeoTrust專有的在線申請技術,只驗證域名全部權,可在10分鐘內得到證書籤發,這不只能夠幫助虛擬主機服務商下降人工成本,並且能夠實現用戶申請流程自動化。 • 安裝簡單,方便快捷; • 兼容性強: 兼容99%以上的瀏覽器和Web服務器