到現在,仍然有人認為只有獨立 IP 的虛擬主機或 VPS 才能享有 SSL/TLS 連接服務。他們會一本正經地教導你,在 SSL 握手的過程中,根本不會傳遞域名這條信息,所以服務器端通常返回的是配置中的第一個可用證書;如果要使用多個證書呢,就只能配置不同的 SSL 端口或增加 IP 地址,或者可以花重金使用一個“多域名 SSL 證書”或一個“通配型證書”來達到相同效果。
這在過去是對的,但不適用于現在,因為 SNI(Server Name Indication) 技術出現了(實際上早就有了)。換句話說,一個 IP 地址上可以為不同域名分配使用不同的 SSL 證書;這同時意味著,共享 IP 的虛擬主機也可實現 SSL/TLS 連接。
SNI(Server Name Indication,意為“服務器名稱指示”) 定義在` RFC 4366`,是一項用于改善 `SSL/TLS` 的技術,在 `SSLv3/TLSv1` 中被啟用。它允許客戶端在發起 SSL 握手請求時(具體說來,是客戶端發出 SSL 請求中的 ClientHello 階段),就提交請求的 Host 信息,使得服務器能夠切換到正確的域并返回相應的證書。
要使用 SNI,需要客戶端和服務器端同時滿足條件,幸好對于現代瀏覽器來說,大部分都支持 SSLv3/TLSv1,所以都可以享受 SNI 帶來的便利。