同一 Apache 伺服器上的多個 SSL 網站
我仍然在嘗試獲取多個有效的 SSL 證書以在同一 Apache-Ubuntu 伺服器上為多個網站域工作時遇到問題。客戶端瀏覽器需要成功驗證 WinXP、Vista 和 Win 7 中的 Internet Explorer、所有作業系統上的 FF 以及 Mac OSX 上的 Safari 的 SSL 證書。
我之前嘗試過幾次問這個問題,但是因為我沒有很好地表達我的問題,所以我得到了很好的答案,但這並不能幫助我實現最終目標。
例如,我嘗試使用NameBasedVirtual 託管和 SNI (q2)讓多個 SSL 在單個 IP 和埠(q1)上工作。
但問題是它不適用於某些較舊的瀏覽器,例如 Windows XP 上的 Internet Explorer 7(在 Windows Vista 上的 IE7 中執行良好)。
因此,我嘗試了一種我認為稱為 IP 別名的方法。我購買了一個新的 IP 地址 2.2.2.2。現在我有兩個:1.1.1.1 和 2.2.2.2。我發出以下 shell 命令將 2.2.2.2 添加到我的伺服器:
john@server> ifconfig eth0:1 2.2.2.2 netmask 255.255.255.0 john@server> route add -host 2.2.2.2 dev eth0:1
我確保 /etc/hosts 文件中存在以下兩行
1.1.1.1 john1 2.2.2.2 john2
然後我完全按照q1所示設置我的虛擬主機文件。我重新啟動了 Apache,但我的所有網站都通過 1.1.1.1 IP 而不是 2.2.2.2 IP。結果,Win XP 上的 IE7 拋出了“證書不能被信任”的錯誤。當我將任何 <VirtualHost *:443> 更改為 <VirtualHost 2.2.2.2:443> 時,所有客戶端瀏覽器都抱怨該網站的“證書不可信”(可能與使用 1.1.1.1 的網站有關IP 地址而不是 2.2.2.2 IP 地址)。
所以我回到我原來的問題。我在哪裡可以找到有關如何在同一個 apache-ubuntu 伺服器上設置多個 SSL 的工作分步指南?誰能幫我解決這個問題?
謝謝
好的,我發現了我的問題。我需要轉到區域文件/dns 管理器並將每個域指向它們各自的 A 記錄 IP 地址(例如,site2.com 到 2.2.2.2)。之後,VirtualHost 文件能夠辨識
<VirtualHost 2.2.2.2:80> and <VirtualHost 2.2.2.2:443>
這樣,Apache 就可以開始將每個域名與它們各自的 IP 地址相關聯。
你在正確的軌道上。基本上,您計劃託管的每個 SSL 網站都必須有一個單一的 IP 地址。這樣做的原因是 SSL 握手首先執行,並且對您嘗試連接的域名一無所知。只有在進行 SSL 握手之後,才會將 HTTP 請求傳輸到伺服器。
我的建議是進行更基本的設置並為每個域啟用一個具有相應 IP 地址的 SSL 虛擬主機。