2016-09-07 88 views
1

我有一個Apache服務器設置爲偵聽端口80上的幾個域名和443兩個(至少這是我想要的)。 所以我有我的Virtualhost *:443與「my-ssl-domain.com」和「my-other-ssl-domain.com」ServerName。這兩個域也都有一個Virtualhost *:80,它使用mod_rewrite重定向到HTTPS版本。我使用讓我們加密他們兩個。使Apache不監聽某些域的端口443

我也有多個(> 10)其他域只能通過HTTP工作。

發生什麼事是,如果我去「https://www.my-non-ssl-domain.com」瀏覽器抱怨沒有有效的證書。谷歌似乎也索引該網頁,我想避免它,因爲它似乎是不好的搜索引擎優化。

我希望它301重定向「https://www.my-non-ssl-domain.com」到「http://www.my-non-ssl-domain.com」或至少根本不應答,就好像HTTPS的域根本不存在一樣。

我該如何解決這個問題?

+1

然後不要使用'Virtualhost *:443',而是明確地指定一個主機名。 – CBroe

+0

你是什麼意思?我沒有提到Apache在所有域(SSL和非SSL)上偵聽相同的IP地址。 – koichirose

+0

如果你使用'*:443',那麼這個VirtualHost將被用作沒有顯式指定他們的「own」VH的所有主機名的後備。所以你需要使用像'Virtualhost somedomain.local:443'這樣的表示這個VH僅用於特定的域(加上ServerAliases),但不適用於每一個沒有顯式配置的傳入HTTPS請求。 – CBroe

回答

0

沒有正確的證書,沒有辦法迴應(沒有警告)https://請求,這就是協議的工作原理。 有幾個選項,但它們都可能對您最佳:

  1. 有兩個公共IP地址,使用一個站點既http + https,另一隻http。然後將Apache配置爲僅在第一個端口上偵聽端口443。

  2. 讓我們加密證書的成本(幾乎)沒有什麼,所以只要去獲得所有域名的證書(即使你出於某種原因不想通過https提供內容,至少你將能夠正確地重定向遊客到http網站)

  3. 我不知道的SEO後果,但如果配置默認<VirtualHost *:443>像這樣(您需要將它所以這是第一個虛擬主機:443 Apache的加載,最好是把它在httpd.conf的底部):

<VirtualHost *:443> 
ServerName non.existing_host.noTld 
</VirtualHost> 

在這種情況下,客戶不會得到證書不匹配的警告(NET::ERR_CERT_COMMON_NAME_INVALID),他們將disonnected由於SSL協議錯誤(ERR_SSL_PROTOCOL_ERROR),這可能是也可能不是更好的搜索引擎優化,我真不」不知道。

+0

我只是爲我的兩個SSL域設置了兩個IP地址。我只會在這些域上收聽443,所以它應該被修復。謝謝。 – koichirose