2013-09-28 32 views
10

我有一臺運行多個客戶站點的Debian服務器。其中大部分都沒有運行SSL,所以通過HTTP訪問沒有問題。每個Apache服務器的多個站點使用SSL,HTTPS顯示錯誤的站點

我有一位擁有SSL證書的客戶,通過HTTPS訪問他們的網站也不錯。

如果您嘗試訪問其他使用HTTPS的網站之一,則會遇到問題,您將其引導至擁有SSL證書的其他網站。

舉例來說,假設我們已經在服務器上的以下站點:

alpha.net 
bravo.net 
charlie.net (SSL) 
delta.net 

因此,大家可以看到,查理是SSL的只有一個,而不論,如果你去到http charlie.net的或https charlie.net,它工作正常。

http到所有其他網站都很好,但是如果您要訪問https alpha.net,它最初會出現無效證書錯誤,並讓您繼續操作,但它在地址欄中具有alpha.net ,它實際上在瀏覽器中顯示了charlie.net網站。

我研究過SNI,以及如果其他網站有SSL,我需要將它們全部放在特定的IP地址上(我需要嘗試解決如何操作的其他東西,因爲我不知道),但我是不知道爲什麼會發生這種情況,或者我如何解決它。

有沒有其他人遇到過這種情況,你是如何解決它的?

非常感謝,

羅布

+0

我已經研究了這個更進一步,我發現它的唯一的Apache站點配置文件包括443是charlie.net。由於這是唯一包含它的人,所以即使你嘗試訪問https和其他域名,你也會轉到charlie.net,因爲它只有https。所以這很有道理。我現在不知道該怎麼做的是設置443並給它一個https指令來重定向到http,因爲沒有證書。所以如果有人知道如何做到這一點,我將不勝感激。 – Rob

+1

joon在網站管理員SE上注意到了同樣的問題:[「https://」指的是隨機站點,「http://」被破壞,但是「http:// www」工程](http://webmasters.stackexchange。 COM/q /17633分之55685) – unor

回答

1

如果您的服務器上有多個IP地址,使用的SSL網站唯一的一個,所有非SSL站點共享另一個IP。

由於SSL並不在乎你所訪問的域是什麼,它只關心當前域是否從它從IP地址獲得的域列表(公共名稱)中獲得批准。

2

這與SNI沒有任何關係,因爲您目前只有一臺HTTPS服務器。正如您在評論中所述,會發生什麼情況是,alpha.net域會解析爲您的服務器的IP。您的Apache服務器設置爲偵聽此IP上端口443上的請求,並將charlie.net的內容提供給這些請求。 (並且證書錯誤意味着瀏覽器注意到證書的所謂域名與用於該請求的域名之間的差異)。

從HTTPS重定向到HTTP可能更麻煩,因爲您需要有效以免爲您的用戶提供另一個安全警告。這將需要創建alpha.net:443虛擬主機等,一個SNI能夠服務器上(即後來與OpenSSL的版本的Apache 2.2+)和添加像這樣一個重定向:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

大概對於您的問題最簡單的過程是對charlie.net使用不同的IP。有了這個設置,alpha.net(等等)將無法顯示另一個站點的內容。

相關問題