Apache-2.2

使用 UCC/SAN 證書的單個 IP 上的 Apache SSL VirtualHosts

  • April 9, 2011

我需要從一個 IP 託管多個帶有 SSL 的 Apache 虛擬主機。

現在 - 我明白,因為 SSL 環繞 HTTP 請求,所以在首先將公鑰發送到客戶端之前,無法知道正在請求哪個主機。這從本質上打破了 SSL 虛擬主機使用標準 SSL 證書的可能性。

我已獲得統一通信證書 (UCC),也稱為主題備用名稱 (SAN) 證書。這允許我為多個域提供相同的證書。

我希望這是 Apache 為任何SSL 請求提供的證書 - 一旦建立加密,然後讓 Apache 像往常一樣解析虛擬主機。

我應該如何為此配置 Apache?我試圖研究如何做到這一點,但我能找到的只是說這是可能的報價,但沒有具體細節:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

雖然 Apache 可以在看到請求中的主機名後重新協商 SSL 連接(並且確實如此),但是在初始握手期間選擇正確的伺服器證書來匹配請求主機名為時已晚,導致瀏覽器警告/有關證書的錯誤其中的主機名錯誤。

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

順便說一句,可以在一個 IP 地址上擁有多個受 SSL 保護的命名虛擬主機——我在我的網站上這樣做——但它會在 Apache 日誌中產生各種警告,並在瀏覽器中產生證書警告。對於需要看起來乾淨的生產站點,我當然不會推薦它。-大衛 7 月 31 日 4:58

www.digicert.com/subject-alternative-name.htm

**虛擬主機 單個 IP 地址上的多個 SSL 站點。**在單個伺服器上託管多個啟用 SSL 的站點通常需要每個站點的唯一 IP 地址,但具有主題備用名稱的證書可以解決此問題。Microsoft IIS 6 和 Apache 都能夠使用統一通信 SSL(也稱為 SAN 證書)虛擬託管 HTTPS 站點。


請幫忙。

我在我的 apache 2.2.14 實例上對此進行了測試,它執行良好:

使用 NameVirtualHost 指令(到 ports.conf):

NameVirtualHost *:443

定義你的虛擬主機:

<VirtualHost *:443>
 ServerName www.siteA.com
 DocumentRoot "/opt/apache22/htdocs/siteA"
 SSLCertificateFile "/path/to/my/cert"
 SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
 ServerName www.siteB.com
 DocumentRoot "/opt/apache22/htdocs/siteB"
 SSLCertificateFile "/path/to/my/cert"
 SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

我將此連結用作資源。

引用自:https://serverfault.com/questions/113076