pourquoi Apache игнорирует мой сертификат certbot и перенаправляет запрос домена на другой сертификат?

Вопрос или проблема

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

Оцените материал
Добавить комментарий

Капча загружается...