У меня есть личный сервер и я использую на нем много поддоменов.
Каждый субдомен имеет свою собственную уникальную настройку сертификата SSL с LetsEncrypt.
Каждый субдомен имеет свой собственный файл vhost в /etc/apache/sites-available/
Каждый субдомен имеет свою собственную запись A и запись NS, которые указывают на мой сервер.
По какой-то причине, если я отключу один из своих поддоменов (например, sub1.domain.com
) с помощью команды a2dissite, а затем попытаюсь перейти на этот сайт в веб-браузере, я получаю сообщение об ошибке:
sub1.domain.com использует недействительный сертификат безопасности.
Сертификат действителен только для sub2.domain.com
Код ошибки: SSL_ERROR_BAD_CERT_DOMAIN
Я убедился, что файлы VHOST действительно используют соответствующие файлы SSL. И файлы VHOST также имеют соответствующее имя сервера, включая часть поддомена.
Если я добавлю исключение к указанной выше ошибке, как вариант, мне будет представлен еще один из моих поддоменов, но URL-адрес останется таким же, как отключенный.
Почему мой сервер указывает мне на совершенно другой субдомен, когда я отключаю сайт? Я бы подумал, что он просто скажет, что его невозможно достичь, но вместо этого он перенаправит меня на другой из моих поддоменов, и я не уверен, как это контролировать.
Первый настроенный vhost имеет наивысший приоритет и может рассматриваться как дефолт или первичный сервер. Это означает, что если получен запрос, который не соответствует одной из указанных директив ServerName, он будет обработан первым.
https://httpd.apache.org/docs/2.4/vhosts/examples.html
В вашем случае sub1.domain.com указывает на ваш веб-сервер, но на веб-сервере нет настроенного виртуального хоста, который бы соответствовал домену. Вместо содержания и сертификата SSL для дефолт домен обслуживаются.
Виртуальные хосты на основе имен для наиболее подходящего набора
<virtualhost>
s обрабатываются в том порядке, в котором они появляются в конфигурации. Используется первое совпадение ServerName или ServerAlias без разницы в приоритете для подстановочных знаков (ни для ServerName и ServerAlias).
источник: HTTP-сервер Apache версии 2.4 - использование виртуальных хостов на основе имени
Afaik невозможно изменить этот процесс сортировки без перекомпиляции.
Чтобы изменить порядок ваших виртуальных хостов, вы можете переименовать * .conf-файлы в /etc/apache/sites-available/
как это:
/etc/apache/sites-available/000-default.conf
/etc/apache/sites-available/100-site-one.conf
/etc/apache/sites-available/200-site-two.conf
Для Debian (Ubuntu должен иметь похожий синтаксис) я рекомендую изменить, скажем, old-site-three.conf
к 300-site-three.conf
в этом порядке:
$ sudo a2dissite old-site-three.conf
$ sudo mv /etc/apache/sites-available/old-site-three.conf /etc/apache/sites-available/300-site-three.conf
$ sudo a2ensite 300-site-three.conf
$ sudo apache2ctl configtest
$ sudo systemctl restart apache2.service