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 обслуживает первый встреченный блок, поскольку это имя хоста не определено в конфигурации.