2014-02-27 65 views
-1

我們擁有4個SAN的UC證書。其中一個SAN是裸域名,即domain.com。Apache ssl Naked域名未找到VirtualHost

我們有ssl正常工作,並指向除主域名或裸域名之外的每個SAN的正確虛擬主機目錄。出於某種原因,我無法弄清楚,Apache在提供裸域請求時正在從主httpd.conf文件提供默認的DocumentRoot。

我們在Linux中運行Apache 2.4。 httpd.conf文件在conf.d /目錄中包含* .conf文件。

我們創建了一個名爲virtual.conf文件,內容是:

<VirtualHost *:80> 
    DocumentRoot /data/www/html/domain/public 
    ServerName  domain.com 
    ServerAlias  *.domain.com 
    SetEnv ZF2_PATH "/data/www/html/zf2/library" 

    <Directory  /data/www/html/domain/public > 
      DirectoryIndex index.php 
      AllowOverride All 
      Order   allow,deny 
      Allow   from all 
    </Directory> 
</VirtualHost> 

<VirtualHost *:443> 
    DocumentRoot /data/www/html/domain/public 
    ServerName  domain.com 
    SetEnv ZF2_PATH "/data/www/html/zf2/library" 

    SSLEngine    on 
    SSLCertificateFile  /etc/pki/tls/certs/domain_com.crt 
    SSLCertificateKeyFile /etc/pki/tls/private/leaders.key 

    <Directory  /data/www/html/domain/public > 
      DirectoryIndex index.php 
      AllowOverride All 
      Order   allow,deny 
      Allow   from all 
      Require all granted 
    </Directory> 
</VirtualHost> 

<VirtualHost *:443> 
    DocumentRoot /data/www/html/domain/public 
    ServerName  va.domain.com 
    SetEnv ZF2_PATH "/data/www/html/zf2/library" 

    SSLEngine    on 
    SSLCertificateFile  /etc/pki/tls/certs/domain_com.crt 
    SSLCertificateKeyFile /etc/pki/tls/private/leaders.key 
    <Directory  /data/www/html/domain/public > 
      DirectoryIndex index.php 
      AllowOverride All 
      Order   allow,deny 
      Allow   from all 
      Require all granted 
    </Directory> 
</VirtualHost> 

,目前公司擁有各指向服務器上的同一文件夾中的虛擬主機。

任何人都可以看到爲什麼調用https://domain.com會導致Apache爲默認的DocumentRoot位置(位於httpd.conf中)而不是此VirtualHost指令中指定的目錄服務?

謝謝。

回答

0

事實證明,VirtualHost指令要求使用內部網絡IP地址屬性。所以

<VirtualHost *:443> 

必須

<VirtualHost 10.10.10.10:443> 

或任何內部網絡的IP地址。

我曾嘗試使用公共IP地址,導致Apache啓動時失敗。所以,公共IP將無法工作,但網絡IP將會。

1

根據Apache維基上的article,您無法爲SSL配置命名虛擬主機。問題是,要確定哪個虛擬主機必須被引用,您必須具有來自HTTP請求的「主機」頭的內容。但是,如果您的SSL請求已加密,則您沒有該信息。這就是爲什麼虛擬主機匹配是依靠IP(或接口)地址(基於IP的虛擬主機)執行的。

雖然,好的是你可能有多個虛擬主機(當然IP地址),以防你的子域是否屬於同一個域(就像它在文章的例子one.example一樣。 com,two.example.com等)。