SSL Virtualhost1, влияющий на псевдоним Virtualhost2 SSL

я загружаю файлы SSL для своих поддоменов с подстановочными знаками из Virtualhost, но второй виртуальный хост загружает SSL-файл первого виртуального хоста, и браузер сообщает об ошибке «Неверный сертификат»

Вот конфигурация

          <VirtualHost *:443>
     ServerName cert-1.domain.com 
     ServerAlias cert-1.domain.com,*.net.domain.com 
    DocumentRoot /home/myuser/public_html
     ServerAdmin webmaster@domain.com

     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 webmaster@domain.com

     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>

Но когда я захожу на что-нибудь.org.domain.com, он загружает файл SSL для первого виртуального хоста вместо файла второго виртуального хоста.

Даже когда я попробовал субдомен, которого нет на первом или втором виртуальном хосте, он все равно загружает первый файл SSL виртуального хоста, и браузер выдает ошибку «Неверный SSL».

Как я могу решить эту проблему,

Спасибо

1 ответ

Псевдонимы серверов должны быть разделены пробелом, а не запятой, поэтому строка должна выглядеть следующим образом:

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

Обратите внимание, что в одном блоке можно указать больше директив, что делает конфигурацию более читабельной в случае большого количества псевдонимов.

Если вы запрашиваете хост, для которого не существует явной конфигурации, Apache обслуживает первый найденный блок (вот почему рекомендуется включитьVirtualHostблокировать сServerAlias *в последнем месте, чтобы иметь «универсальный» сайт).

Так что в вашем случае ни один изServerAliasстроки работают (во всяком случае, не так, как вы ожидаете), поскольку вы определяете псевдоним для сервера, который будет иметь имя «cert-2.domain.com,*.org.domain.com», с запятой, звездочкой и всем остальным. . Для этого, когда вы запрашиваете «anything.org.domain.com», Apache обслуживает первый встреченный блок, поскольку это имя хоста не определено в конфигурации.

Другие вопросы по тегам