2016-05-21 80 views
0

我在我的apache服務器上有一個通配符SSL證書。它可以和我的域完美協作,但錯誤的是它可以與我的apache服務器上的所有域一起使用!我不想要它,當我繼續使用https://www.mywebsitewithouthttps.com時,firefox告訴我該頁面不安全,因爲證書是www.mydomainwithhttps.com。如果我在瀏覽器上爲此SSL錯誤添加了一個例外情況,它不是「mywebsitewithouthttps.com」,而是「mydomainwithhttps.com」(在此URL上:https://www.mywebsitewithouthttps.com)!多個域和SSL:所有域使用我的SSL證書,但我不想要?

我不希望我的證書適用於所有其他域!這是一個大問題,因爲谷歌抓取和與mydomainwithhttps.com的:-(

這是我的虛擬主機的內容進行索引SSL HTTPS上我的所有其他領域:

NameVirtualHost *:443 
<VirtualHost *:443> 
    ServerName www.mydomainwithhttps.com  
    DocumentRoot "/home/mydomainwithhttps/www" 

    suPHP_Engine On 
    suPHP_AddHandler x-httpd-php 
    suPHP_UserGroup mydomainwithhttps users 
    AddHandler x-httpd-php .php 

    SSLEngine on 
    SSLCertificateFile /certificates/ssl_certificate.crt 
    SSLCertificateKeyFile /certificates/www.mydomainwithhttps.com.key 
    SSLCACertificateFile /certificates/IntermediateCA.crt 
</VirtualHost> 
+0

你有一個通配SSL ***證書***。 SSL是安全的交通工具。無關。 – EJP

回答

0

的問題是,Apache會嘗試找到https://www.mywebsitewithouthttps.com/的配置,當它沒有時,它會默認回到第一個https配置(一個用於mydomainwithhttps)。

這將顯示一個證書錯誤,但是,正如你所經歷的,如果你點擊,你看錯了網站。

但我不能理解Google抓取並編制網站索引。我會認爲它會在發現證書錯誤時停止?如果情況並非如此,我會感到非常驚訝,但如果不是這樣,你可以對這些主機名a重新定義一個重寫規則,以重定向回http。

這裏只有2解決這個辦法:對於其他領域

  1. 獲取證書,因此您可以通過https連接。如果你真的想要,你仍然可以重定向回http。
  2. 使用https將服務器分隔到不同的服務器(或同一臺服務器上的不同IP,並將Apache配置設置爲僅在https IP地址上偵聽端口443)。

這就是Apache(以及大多數 - 如果不是全部 - 其他Web服務器)的工作方式。

1

如果您發出HTTPS請求,客戶端將在服務器上建立與相關IP和端口(通常爲443)的TCP連接。如果連接成功,它將啓動TLS握手,在TLS握手過程中,它將獲得用於驗證的證書。

如果你有相同的IP地址和端口多個服務器他們都共享同一個TCP監聽器。由於TCP連接嘗試沒有關於目標服務器名稱的信息,但僅具有目標IP地址和端口,即使(但未知的)目標主機名未配置HTTPS,偵聽器也會接受所有連接嘗試。

現代客戶端然後在TLS握手中發送目標主機名,並且只有服務器知道客戶端需要什麼。如果它爲請求的名稱配置了HTTPS,則服務器可以發送相應的證書。如果沒有爲此名稱配置HTTPS,服務器將發送默認證書或關閉連接(可能在關閉時發送TLS警報)。

總之這留給您以下選項:

  1. 的HTTPS網站和非HTTPS的網站使用不同的IP地址。這樣TCP連接就會失敗,因爲服務器沒有監聽這個IP:端口上的連接。
  2. 配置您的服務器以在客戶端請求未配置HTTPS的主機名時返回錯誤。這樣客戶端可能會在瀏覽器中得到一些關於HTTPS問題的奇怪錯誤信息。我不確定,但也許你可以在使用SSLStrictSNIVHostCheck on選項時以這種方式設置Apache。如果這個選項沒有幫助,那麼Apache可能不支持這種設置。
  3. 只要名稱不匹配或客戶端不支持SNI,請配置服務器以使用默認證書(通常爲第一個配置的證書)。客戶端將在瀏覽器中收到證書不匹配警告。這是您目前的設置。
  4. 正確設置HTTPS的全部域可以通過具有單獨的證書或通過將它們全部包含在單個證書中。

因此,爲了確保機器人不會認爲您的網站可以執行HTTPS,您需要使用選項1或2.請注意,在所有這些情況下,您都希望機器人支持SNI,這並不是所有的事情。因此,爲了獲得最佳兼容性,您需要爲每個HTTPS站點使用單獨的IP地址。