Вопрос или проблема
Я считаю, что две проблемы, с которыми я столкнулся, связаны друг с другом, но не знаю, с чего начать. Первая проблема заключается в том, что когда запрашивается определенный домен, который разрешается на моем сервере, его конфигурационный файл в sites-enabled игнорируется, как и 000-default.conf, вместо этого используется первый конфигурационный файл в алфавитном порядке, и этот сайт появляется, но с доменом, который я запрашивал в адресной строке браузера.
Это происходит только с этим одним доменом, что приводит ко второй проблеме. У меня есть много-доменный сертификат (CA), и все домены в нем отображаются как ожидалось. У меня установлен сертификат certbot для этого другого домена. Когда я использую openssl с именем этого другого домена, он показывает содержимое много-доменного сертификата. Когда я использую SSL проверщик, я получаю те же результаты, при этом отмечая, что имя домена, которое я ввел, не включено в сертификат.
Я замечаю, что когда я выполняю apachectl -S перед перечислением файлов *:443 и *:80, он перечисляет виртуальный хост с IP-адресом сервера в качестве названного сервера, и первым файлом, который он перечисляет, не является 000-default (который УГО перечислен в первую очередь для *:80 и *:443), а следующий по алфавиту.
Проблемный домен – halgrossman.com.
halgrossman.com.conf
<VirtualHost *:80>
ServerName halgrossman.com
ServerAlias www.halgrossman.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/drupal/halgrossman/web
<Directory /var/www/html/drupal/halgrossman/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
halgrossman.com-le-ssl.conf
<VirtualHost *:443>
ServerName halgrossman.com
ServerAlias www.halgrossman.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/drupal/halgrossman/web
<Directory /var/www/html/drupal/halgrossman/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/halgrossman.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/halgrossman.com/privkey.pem
</VirtualHost>
Результат от openssl
openssl s_client -connect halgrossman.com:443 -servername halgrossman.com
CONNECTED(00000003)
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = theaccidentalcoder.com
verify return:1
---
Certificate chain
0 s:CN = theaccidentalcoder.com
i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Sep 2 00:00:00 2024 GMT; NotAfter: Dec 21 23:59:59 2024 GMT
1 s:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA384
v:NotBefore: Nov 2 00:00:00 2018 GMT; NotAfter: Dec 31 23:59:59 2030 GMT
2 s:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA384
v:NotBefore: Mar 12 00:00:00 2019 GMT; NotAfter: Dec 31 23:59:59 2028 GMT
3 s:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA1
v:NotBefore: Jan 1 00:00:00 2004 GMT; NotAfter: Dec 31 23:59:59 2028 GMT
theaccidentalcoder.com является основным доменом на много-доменном CA сертификате, в который halgrossman.com не входит.
Результат от SSL Checker
halgrossman.com разрешается на 45.56.118.187
Тип сервера: Apache/2.4.52 (Ubuntu)
Сертификат должен быть доверен всеми основными веб-браузерами (все правильные промежуточные сертификаты установлены).
Сертификат был выдан Sectigo.
Сертификат истечет через 84 дня.
Никакие общие имена в сертификате не соответствуют введенному имени (halgrossman.com). Вы можете получить ошибку при доступе к этому сайту в веб-браузере. Узнайте больше о ошибках несовпадения имен.
Общее имя: theaccidentalcoder.com
SANs: theaccidentalcoder.com, ascaatl.org, guildbuildersinc.com, musictohealby.com, souknook.com, thetouristlife.com
Действителен с 1 сентября 2024 года по 21 декабря 2024 года
Результат от apache2ctl -S
45.56.118.187:443 является NameVirtualHost
сервер по умолчанию guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:37)
порт 443 namevhost guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:37)
порт 443 namevhost musictohealby.com (/etc/apache2/sites-enabled/musictohealby.com.conf:37)
порт 443 namevhost theaccidentalcoder.com (/etc/apache2/sites-enabled/theaccidentalcoder.com.conf:23)
порт 443 namevhost thetouristlife.com (/etc/apache2/sites-enabled/thetouristlife.com.conf:21)
*:443 halgrossman.com (/etc/apache2/sites-enabled/halgrossman.com-le-ssl.conf:2)
*:80 является NameVirtualHost
сервер по умолчанию halgrossman.com (/etc/apache2/sites-enabled/00-default.conf:1)
порт 80 namevhost halgrossman.com (/etc/apache2/sites-enabled/00-default.conf:1)
алиас www.halgrossman.com
порт 80 namevhost default (/etc/apache2/sites-enabled/000-default.conf:1)
порт 80 namevhost guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:1)
алиас www.guildbuildersinc.com
порт 80 namevhost halgrossman.com (/etc/apache2/sites-enabled/halgrossman.com.conf:1)
алиас www.halgrossman.com
порт 80 namevhost musictohealby.com (/etc/apache2/sites-enabled/musictohealby.com.conf:1)
алиас www.musictohealby.com
порт 80 namevhost theaccidentalcoder.com (/etc/apache2/sites-enabled/theaccidentalcoder.com.conf:1)
алиас www.theaccidentalcoder.com
порт 80 namevhost thetouristlife.com (/etc/apache2/sites-enabled/thetouristlife.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Обратите внимание, что список доменов, появляющийся первым, указан для IP, и не включает 000-default. Первый из них ** не ** является 000-default, а первым, алфавитным после 000-default, и сайт, который появляется при запросе https://halgrossman.com.
Ответ или решение
Для решения вашей проблемы с Apache и Certbot, необходимо учесть несколько аспектов, касающихся конфигурации виртуальных хостов и сертификатов. В вашем случае есть две основные проблемы: некорректный выбор виртуального хоста и проблемы с сертификатами.
1. Проблема с виртуальными хостами
Судя по выводу команды apache2ctl -S
, Apache использует конфигурацию виртуального хоста, основываясь на порядке следования общих имен и IP-адресов. Когда вы запрашиваете halgrossman.com
, Apache, видимо, выбирает первый виртуальный хост, который совпадает с запрашиваемым IP-адресом, и если порядок установленных хостов не соответствует вашим ожиданиям, это может привести к неправильному отображению.
Шаги для решения:
-
Проверьте порядок конфигурации файлов: Убедитесь, что файл
halgrossman.com-le-ssl.conf
иhalgrossman.com.conf
находятся в директории/etc/apache2/sites-enabled/
и их названия не конфликтуют с другими файлами (например, убедитесь, что другие файлы не начинаются с буквы "h", чтобы не обойти ваши конфигурации). -
Используйте директиву
Default-SSL
в https: Если вы хотите, чтобыhalgrossman.com
был вашим "по умолчанию" для SSL, вам нужно убедиться, что он расположен раньше в названиях файлов, а значит, имеет более низкую букву в алфавитном порядке, или вы можете явно указать соответствие в конфигурации, добавив названия для серверов.
2. Проблема с SSL сертификату
Вы наблюдаете, что при запросе на halgrossman.com
выводится сертификат для theaccidentalcoder.com
. Это может указывать на то, что Apache не распознает ваш сертификат для halgrossman.com
, или он не был правильно настроен.
Шаги для решения:
-
Проверьте пути к сертификатам: Убедитесь, что пути к файловым сертификатам
SSLCertificateFile
иSSLCertificateKeyFile
в вашем конфигурационном файлеhalgrossman.com-le-ssl.conf
корректны и доступ к ним разрешен для пользователя Apache. Правильные права доступа к папкам и файлам также критичны. -
Обновите сертификаты с помощью Certbot: Убедитесь, что сертификаты для
halgrossman.com
действительно выданы и активны. Вы можете выполнить команду:sudo certbot certonly --apache -d halgrossman.com -d www.halgrossman.com
Это обновит сертификаты и убедится, что они правильно установлены.
-
Перезапустите Apache: После всех изменений перезапустите Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
3. Дополнительные советы
-
Проверьте логи Apache: Изучите файлы журналов Apache (обычно находятся в
/var/log/apache2/error.log
и/var/log/apache2/access.log
), чтобы получить больше информации о том, что происходит при попытке доступа кhalgrossman.com
. -
Удалите временные конфигурации: Если вы ранее пробовали изменять конфигурации, убедитесь, что нет конфликтующих виртуальных хостов или устаревших настроек, которые могут вызывать проблемы.
Следуя этим рекомендациям, вы должны быть в состоянии решить проблемы, связанные с неправильным выбором сертификата и конфигурацией виртуальных хостов на вашем сервере Apache. Если после выполнения всех шагов проблема не решится, возможно, имеет смысл обратиться за дополнительной помощью на специализированные форумы или к профессиональному администратору.