Я загружаю файлы SSL для моих поддоменов wildcard с Virtualhost, но второй виртуальный хост загружает файл 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>
Но когда я захожу на anything.org.domain.com, он загружает файл SSL для первого виртуального хоста вместо второго виртуального хоста,
Даже когда я попробовал поддомен, который не находится на первом или втором виртуальном хосте, он все равно загружает SSL-файл первого виртуального хоста, и браузер выдает ошибку Invalid 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 обслуживает первый блок, который он встречает, поскольку это имя хоста не определено в конфигурации.