Virtualhost1 SSL 影響 Virtualhost2 別名 SSL

Virtualhost1 SSL 影響 Virtualhost2 別名 SSL

我正在從 Virtualhost 加載通配符子網域的 SSL 文件,但第二個虛擬主機加載第一個虛擬主機的 ssl 文件,並且瀏覽器報告無效證書錯誤

這是配置

    <VirtualHost *:443>
     ServerName cert-1.domain.com 
     ServerAlias cert-1.domain.com,*.net.domain.com 
    DocumentRoot /home/myuser/public_html
     ServerAdmin [email protected]

     UseCanonicalName Off  

   <IfModule mod_suphp.c>
   suPHP_UserGroup myuser myuser
   </IfModule>
   <IfModule suexec_module>
   <IfModule !mod_ruid2.c>
   SuexecUserGroup myuser myuser 
   </IfModule>
   </IfModule>

   <IfModule ssl_module>
   SSLEngine on 
  SSLCertificateFile /etc/letsencrypt/live/cert-1.domain.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/cert-1.domain.com/privkey.pem
   </IfModule>
   </VirtualHost>





    <VirtualHost *:443>
     ServerName cert-2.domain.com
     ServerAlias cert-2.domain.com,*.org.domain.com 
     DocumentRoot /home/myuser/public_html
     ServerAdmin [email protected]

     UseCanonicalName Off  

     <IfModule mod_suphp.c>
       suPHP_UserGroup myuser myuser
     </IfModule>
     <IfModule suexec_module>
       <IfModule !mod_ruid2.c>
         SuexecUserGroup myuser myuser 
      </IfModule>
     </IfModule>

  <IfModule ssl_module>
   SSLEngine on 
  SSLCertificateFile /etc/letsencrypt/live/cert-2.domain.com-2/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cert-2.domain.com-2/privkey.pem
   </IfModule> 
   </VirtualHost>

但是當我訪問 everything.org.domain.com 時,它會加載第一個虛擬主機的 SSL 文件,而不是第二個虛擬主機的 SSL 文件,

即使當我嘗試不在第一個或第二個虛擬主機中的子網域時,它仍然會載入第一個虛擬主機 SSL 文件,並且瀏覽器會拋出無效的 SSL 錯誤。

我該如何解決這個問題,

謝謝

答案1

伺服器別名應該用空格而不是逗號分隔,因此您的ServerAlias行應該如下所示:

ServerAlias cert-1.domain.com *.net.domain.com

請注意,可以在單一區塊中給出更多ServerAlias指令,這使得配置在存在許多別名的情況下更具可讀性。

如果您要求的主機不存在明確配置,Apache 會提供它找到的第一個區塊(這就是為什麼最好在最後的位置包含一個VirtualHost區塊ServerAlias *,以擁有一個「包羅萬象」的網站)。

因此,在您的情況下,這些ServerAlias行都不起作用(無論如何,都不如您所期望的那樣),因為您正在為具有“cert-2.domain.com,*.org.domain.com”的伺服器定義別名名稱,包含逗號、星號等。為此,當您要求「anything.org.domain.com」時,Apache 會提供它遇到的第一個區塊,因為該主機名稱未在設定中定義。

相關內容