Ошибка Apache AH02572: не удается настроить ни один сертификат и ключ

Эта серия мануалов поможет вам предотвратить или устранить самые распространенные ошибки, которые возникают при работе с веб-сервером Apache.

Каждый мануал в этой серии включает описание распространенных ошибок Apache, связанных с конфигурацией, сетью, файловой системой или привилегиями.

Сервер Apache выдает ошибку «AH02572: Failed to configure at least one certificate and key», когда он поддерживает модуль ssl, но открытый сертификат TLS/SSL и соответствующий закрытый ключ отсутствуют. Ошибка не позволит запустить Apache, а само сообщение об ошибке будет зарегистрировано в логах Apache.

В этом мануале вы узнаете, как найти ошибку AH02572, используя методы, описанные в руководстве Устранение общих ошибок Apache. Вы также узнаете, как установить директивы SSLCertificateFile и SSLCertificateKeyFile для устранения этой ошибки.

Если вы уже определили, что на вашем сервере Apache возникла ошибка AH02572, и хотите пропустить разделы по поиску неполадок, перейдите к последнему разделу мануала, чтобы исправить ее.

Поиск ошибки с помощью systemctl

При возникновении ошибки «AH02572: Failed to configure at least one certificate and key» Apache не будет работать. Команда systemctl при запросе статуса сервера покажет сообщение об ошибке.

Чтобы проверить статус Apache с помощью systemctl, выполните в дистрибутивах Ubuntu и Debian следующую команду:

sudo systemctl status apache2.service -l --no-pager

В системах CentOS и Fedora используйте эту команду:

sudo systemctl status httpd.service -l --no-pager

Флаг -l выводит все содержимое строки без сокращений (без замены длинных строк многоточием (…)). Флаг —no-pager выводит весь лог на ваш экран, не вызывая инструмент less, который показывает только один экран контента за раз.

Вы получите примерно следующий результат:

apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: failed (Result: exit-code) since Fri 2020-07-31 16:02:41 UTC; 20s ago
Process: 36 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Starting The Apache HTTP Server...
Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: Action 'start' failed.
Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: The Apache error log may have more information.
Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Control process exited, code=exited status=1
Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Failed with result 'exit-code'.
Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Failed to start The Apache HTTP Server.

Следует отметить, что в выводе есть строки, которые показывают, что Apache не запустился, но нет ничего, что указывало бы на ошибку AH02572. Изучение логов systemd для Apache с помощью команды journalctl или проверка конфигурационных файлов Apache с помощью apachectl configtest не поможет найти информацию, которую можно использовать для устранения ошибки.

Чтобы диагностировать и устранить ошибку AH02572, нужно сразу исследовать логи Apache.

Изучение логов Apache

В зависимости от дистрибутива Linux Apache регистрирует диагностическую информацию о своих внутренних операциях в различных файлах. Обычно Apache хранит сообщения об ошибках в отдельном логе, чтобы упростить процесс отладки, мониторинга и поиска предупреждений.

В системах Ubuntu и Debian для хранения сообщений об ошибках веб-сервер Apache по умолчанию использует /var/log/apache2/error.log.

В системах CentOS, Fedora и RedHat Apache по умолчанию записывает ошибки в файл /var/log/httpd/error_log.

Чтобы изучить логи Apache на наличие сообщения об ошибке AH02572, используйте утилиту grep для поиска кода ошибки в соответствующем файле лога (в зависимости от дистрибутива). Для этого можно использовать и другие инструменты, такие как less, но grep будет отображать только строки с кодом ошибки, поэтому вы можете узнать, есть ли ошибка на вашем сервере.

В системах Ubuntu и Debian вызовите grep вот так:

sudo grep AH02572 /var/log/apache2/error.log

В CentOS, Fedora и RedHat введите такую команду:

sudo grep AH02572 /var/log/httpd/error_log

Если на вашем сервере Apache возникла ошибка AH02572, вы получите следующий результат:

[Mon Aug 03 13:21:47.677235 2020] [ssl:emerg] [pid 26:tid 140355819735360] AH02572: Failed to configure at least one certificate and key for 203.0.113.0:443

Если ошибка AH02572 подтвердилась, в следующем разделе этого мануала мы объясним, как ее решить. Для этого можно либо отключить модуль ssl, либо настроить закрытый ключ и сертификат для Apache.

Устранение ошибки AH02572

Есть три способа исправить ошибку AH02572. Первый вариант – настроить Apache для поддержки закрытого ключа и открытого сертификата, подписанного доверенным центром сертификации (ЦС). Let’s Encrypt – это бесплатный центр сертификации, который можно использовать для получения такого сертификата. Этот подход гарантирует, что входящий и исходящий трафик будет правильно зашифрован, а веб-браузеры и другие HTTP-клиенты смогут доверять вашему серверу Apache.

Второй подход — создать самоподписанный сертификат для вашего сервера Apache. Этот вариант больше всего подходит для сред разработки и тестирования или для тех случаев, когда сервер не подключен к Интернету напрямую и вы можете установить доверительные отношения между системами вручную.

Последний подход к устранению ошибки AH02572 – полное отключение ssl-модуля Apache. Этот вариант наименее предпочтителен, поскольку входящий и исходящий трафик не будет шифроваться. Однако если вы используете свой сервер Apache только для локальной разработки или в доверенной среде, отключить модуль можно.

Устранение ошибки AH02572 с помощью TLS-сертификата Let’s Encrypt

Чтобы зашифровать трафик Apache с помощью бесплатного сертификата Let’s Encrypt, воспользуйтесь одним из наших мануалов, относящихся к вашему дистрибутиву Linux:

Примечание: Руководства для других дистрибутивов можно найти здесь.

Почти все процессы Let’s Encrypt автоматизированы, его сценарии настроят Apache за вас. Более того, выданный сертификат будет автоматически продлеваться, поэтому вам не нужно беспокоиться о его сроке действия.

Если вы не нашли всей необходимой информации в наших мануалах, обратитесь к документации Let’s Encrypt, она может помочь вам настроить сервер Apache для поддержки сертификата

Устранение ошибки AH02572 с помощью самоподписанного сертификата

Чтобы зашифровать трафик на ваш сервер Apache с помощью самоподписанного сертификата, используйте один из наших мануалов:

Примечание: Руководства для других дистрибутивов можно найти здесь.

Эти руководства помогут вам сгенерировать закрытый ключ и открытый сертификат для вашего сервера Apache. Они также подскажут, как использовать директивы SSLCertificateFile и SSLCertificateKeyFile Apache в настройке вашего сервера для поддержки созданного сертификата.

Читайте также: Основы OpenSSL: SSL-сертификаты, закрытые ключи и запросы на подпись

Примечание: По возможности лучше использовать бесплатный сертификат от Let’s Encrypt или другой коммерческий сертификат TLS. Самоподписанные сертификаты TLS не пользуются доверием браузеров и других HTTP-клиентов, а потому ваши пользователи увидят предупреждение о безопасности при посещении вашего сайта. Однако если вы занимаетесь локальной разработкой, то вам не требуется доверенный сертификат TLS, вы можете выбрать самоподписанный сертификат.

Отключение модуля ssl

Последний подход к устранению ошибки AH02572 – отключить поддержку TLS/SSL путем отключения модуля ssl. Этот подход опаснее, чем добавление сертификата ваш сервер, поэтому убедитесь, что вам не нужна поддержка TLS и шифрование, прежде чем отключать модуль.

Чтобы отключить модуль Apache в системах Ubuntu и Debian, выполните следующую команду:

sudo a2dismod ssl

В системах CentOS, Fedora и RedHat отключите модуль с помощью следующей команды:

sudo rm /etc/httpd/conf.modules.d/00-ssl.conf

После отключения модуля ssl запустите apachectl, чтобы проверить ошибки в конфигурации.

sudo apachectl configtest

Если ошибок нет, вы увидите такой вывод:

Syntax OK

Теперь вы можете перезапустить Apache, используя соответствующую команду systemctl restart (в зависимости от вашего дистрибутива Linux).

В системах Ubuntu и Debian запустите следующее:

sudo systemctl restart apache2.service

В системах на основе CentOS, Fedora и RedHat используйте эту команду для перезапуска Apache:

sudo systemctl restart httpd.service

Если в команде systemctl нет ошибок, значит, вы успешно отключили модуль ssl.

Заключение

Ошибку AH02572 сложно обнаружить и устранить. Ее невозможно диагностировать с помощью обычных команд systemctl, journalctl и apachectl. В этом мануале вы узнали, как использовать утилиту grep для просмотра логов Apache на наличие ошибки AH02572.

Также мы рассказали, как исправить эту ошибку: можно использовать Let’s Encrypt и получить доверенный сертификат TLS; можно создать самоподписанный сертификат TLS (подходит для разработки и изолированных сред); последний вариант – вовсе отключить модуль ssl (следует использовать только в тех случаях, когда шифрование не нужно).

Tags: , , , , , , ,

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