Не удалось запустить Apache HTTP Server

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

У меня возникла проблема с SSL сертификатом.

Я использовал сертификат Let’s Encrypt, и всё было в порядке. Теперь я пытаюсь перейти на сертификат от DigiCert и не могу снова заставить его работать. Httpd не запускается.

Буду признателен за любые отзывы, замечания, вопросы и т.д., чтобы направить меня в нужном направлении.

#systemctl restart httpd.service

Работа для httpd.service не удалась, потому что управляющий процесс завершился с кодом ошибки.
Смотрите «systemctl status httpd.service» и «journalctl -xeu httpd.service» для получения подробной информации.

$journalctl -xeu httpd.service

14 июня 16:30:01 www systemd[1]: Запуск HTTP-сервера Apache...
░░ Тема: Началась работа для юнита httpd.service
░░ Определено: systemd
░░ Поддержка: https://access.redhat.com/support
░░
░░ Началась работа для юнита httpd.service.
░░
░░ Идентификатор работы: 35150873.
14 июня 16:30:01 www systemd[1]: httpd.service: Главный процесс завершён, код=выход, статус=1/НЕУДАЧА
░░ Тема: Процесс юнита завершён
░░ Определено: systemd
░░ Поддержка: https://access.redhat.com/support
░░
░░ Процесс ExecStart=, принадлежащий юниту httpd.service, завершился.
░░
░░ Код выхода процесса 'выход' и его статус выхода 1.
14 июня 16:30:01 www systemd[1]: httpd.service: Не удалось с результатом 'exit-code'.
░░ Тема: Юнит завершился с ошибкой
░░ Определено: systemd
░░ Поддержка: https://access.redhat.com/support
░░
░░ Юнит httpd.service вошел в состояние 'неудача' с результатом 'exit-code'.
14 июня 16:30:01 www systemd[1]: Не удалось запустить HTTP-сервер Apache.
░░ Тема: Работа для юнита httpd.service завершилась с ошибкой
░░ Определено: systemd
░░ Поддержка: https://access.redhat.com/support
░░
░░ Работа для юнита httpd.service завершилась с ошибкой.
░░
░░ Идентификатор работы: 35150873, и результат работы - ошибка.

$systemctl status httpd.service

× httpd.service - HTTP-сервер Apache
     Загружен: загружен (/usr/lib/systemd/system/httpd.service; включен; предустановка вендора: отключена)
    Drop-In: /usr/lib/systemd/system/httpd.service.d
             └─php-fpm.conf
     Активен: неудача (Результат: exit-code) с ср 2023-06-14 16:10:08 EDT; 6 с назад
   Продолжительность: 23ч 48мин 30,301с
       Документы: man:httpd.service(8)
    Процесс: 3216240 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (код=выход, статус=1/НЕУДАЧА)
   Главный PID: 3216240 (код=выход, статус=1/НЕУДАЧА)
     Статус: "Чтение конфигурации..."
        CPU: 39ms

14 июня 16:10:08 www systemd[1]: Запуск HTTP-сервера Apache...
14 июня 16:10:08 www systemd[1]: httpd.service: Главный процесс завершён, код=выход, статус=1/НЕУДАЧА
14 июня 16:10:08 www systemd[1]: httpd.service: Не удалось с результатом 'exit-code'.
14 июня 16:10:08 www systemd[1]: Не удалось запустить HTTP-сервер Apache.

Содержимое ssl.conf ниже:

SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300
SSLCryptoDevice builtin

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLHonorCipherOrder on
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

ServerName www:443

Содержимое mydomain.conf ниже:

ServerAdmin [email protected]
  ServerName www.mydomain.com
  ServerAlias mydomain.com
  DocumentRoot /var/www/html/mydomain.com
  <Directory "/var/www/html/mydomain.com">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
  ErrorLog "logs/error_log_mydomain.com"
  CustomLog "logs/access_log_mydomain.com" combined
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =prod.mydomain.com [OR]
  RewriteCond %{SERVER_NAME} =mydomain.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=перманентный]
</VirtualHost>

<VirtualHost *:443>
  ServerName www.mydomain.com
  ServerAlias mydomain.com
  DocumentRoot /var/www/html/mydomain.com
  <Directory "/var/www/html/mydomain.com">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  SSLEngine on

  SSLCertificateFile /etc/pki/tls/certs/prod.mydomain.com.crt
  SSLCertificateKeyFile /etc/pki/tls/private/prod.mydomain.com.key
  SSLCACertificateFile /etc/pki/tls/certs/DigiCertCA.crt
</VirtualHost>

$http -t

Синтаксис в порядке

$cat /var/log/httpd/error_log

[Ср Июн 14 12:36:20.378579 2023] [core:notice] [pid 3210863:tid 3210863] Политика SELinux включена; httpd работает с контекстом system_u:system_r:httpd_t:s0
[Ср Июн 14 12:36:20.379481 2023] [suexec:notice] [pid 3210863:tid 3210863] AH01232: механизм suEXEC включен (обратный: /usr/sbin/suexec)
[Ср Июн 14 12:36:20.381647 2023] [ssl:emerg] [pid 3210863:tid 3210863] AH02311: Фатальная ошибка инициализации mod_ssl, выход. Смотрите /etc/httpd/logs/ssl_error_log для получения дополнительной информации
AH00016: Конфигурация не удалась

#cat /var/log/httpd/ssl_error_log

[Ср Июн 14 16:30:01.562719 2023] [core:notice] [pid 3216760:tid 3216760] Политика SELinux включена; httpd работает с контекстом system_u:system_r:httpd_t:s0
[Ср Июн 14 16:30:01.563467 2023] [suexec:notice] [pid 3216760:tid 3216760] AH01232: механизм suEXEC включен (обратный: /usr/sbin/suexec)
[Ср Июн 14 16:30:01.565223 2023] [ssl:emerg] [pid 3216760:tid 3216760] AH02572: Не удалось настроить хотя бы один сертификат и ключ для www:443
[Ср Июн 14 16:30:01.565244 2023] [ssl:emerg] [pid 3216760:tid 3216760] Ошибка библиотеки SSL: ошибка:0A0000B1:SSL routines::нет сертификата
[Ср Июн 14 16:30:01.565249 2023] [ssl:emerg] [pid 3216760:tid 3216760] AH02312: Фатальная ошибка инициализации mod_ssl, выход.
AH00016: Конфигурация не удалась

Та же ошибка здесь, после обновления с Fedora 38 на 40:

$ sudo systemctl restart httpd
Работа для httpd.service не удалась, потому что управляющий процесс завершился с кодом ошибки.
Смотрите «systemctl status httpd.service» и «journalctl -xeu httpd.service» для получения подробной информации.

Вводя команду $ systemctl status httpd.service, я читаю:

(2)Нет такого файла или директории: AH02291: Невозможно получить доступ к директории '/etc/httpd/logs/' для основного файла журнала ошибок

На самом деле, вводя ls -l /etc/httpd/, возвращается:

lrwxrwxrwx 1 root root 19 1 ago 02.00 logs -> ../../var/log/httpd

И я заметил, что папка /var/log/httpd не существовала, поэтому, выполнив:

sudo mkdir /var/log/httpd
systemctl start httpd.service
systemctl status httpd.service

проблема была решена!

Ответ или решение

Неудовлетворительная работа Apache HTTP Server: Решение проблем с SSL-сертификатом

Введение

Недавно вы столкнулись с проблемой при переключении с сертификата Let’s Encrypt на сертификат, выданный компанией DigiCert, что привело к невозможности запуска Apache HTTP Server (httpd). В этом ответе мы рассмотрим шаги по диагностике и устранению проблемы на основе предоставленных вами данных.

Описание проблемы

Проблема была выявлена после выполнения команды для перезапуска сервера Apache:

systemctl restart httpd.service

Вы получили сообщение об ошибке:

Job for httpd.service failed because the control process exited with error code.

В дополнение вы проверили состояние службы с помощью:

systemctl status httpd.service

Это показало, что служба не запущена из-за ошибки с кодом выхода 1, а детализированный журнал ошибок из ssl_error_log указал на следующие критические сообщения:

AH02572: Failed to configure at least one certificate and key for www:443
SSL Library Error: error:0A0000B1:SSL routines::no certificate assigned

Анализ

На основе предоставленных вами логов и конфигурации можно выделить несколько ключевых аспектов:

  1. Отсутствие сертификатов: Ошибка «no certificate assigned» указывает на то, что Apache не может найти указанные вами SSL-сертификаты или ключи.

  2. Пути к сертификатам: Ваша конфигурация указывает на следующее:

    • SSLCertificateFile /etc/pki/tls/certs/prod.mydomain.com.crt
    • SSLCertificateKeyFile /etc/pki/tls/private/prod.mydomain.com.key
    • SSLCACertificateFile /etc/pki/tls/certs/DigiCertCA.crt

    Убедитесь, что все файлы существуют по указанным путям и имеют корректные разрешения.

  3. Проверка логов: Вы уже выполнили проверку логов Apache, которые указали на проблему с инициализацией модуля SSL. Кроме того, стоит проверить логи SELinux, так как они могут блокировать доступ к файлам.

Решение проблем

  1. Проверка файлов сертификатов:

    • Убедитесь, что файлы сертификатов и ключей присутствуют на сервере. Вы можете выполнить следующее:

      ls -l /etc/pki/tls/certs/prod.mydomain.com.crt
      ls -l /etc/pki/tls/private/prod.mydomain.com.key
      ls -l /etc/pki/tls/certs/DigiCertCA.crt
    • Если какой-либо из файлов отсутствует, вам нужно либо восстановить его, либо загрузить заново сертификаты от DigiCert.

  2. Проверка прав доступа:

    • Убедитесь, что файлы сертификатов имеют правильные права доступа. Обычно ключевые файлы должны быть доступны только для чтения пользователю root:

      sudo chmod 400 /etc/pki/tls/private/prod.mydomain.com.key
  3. Перезапуск Apache:

    • После выполнения всех вышеуказанных проверок попробуйте снова перезапустить httpd:

      sudo systemctl restart httpd.service
  4. Логи SELinux:

    • Если проблема сохраняется, рассмотрите возможность временного отключения SELinux для тестирования:

      sudo setenforce 0
    • Если это решает проблему, вам, возможно, потребуется настроить SELinux для корректной работы с новыми сертификатами.

Заключение

Следуя приведённым рекомендациям, вы должны быть в состоянии устранить проблему с запуском Apache HTTP Server после замены SSL-сертификатов. Помните, что важно регулярно проверять журналы и вести мониторинг за окружением сервера для предотвращения будущих проблем. Если проблема останется, рассмотрите возможность обращения в поддержку DigiCert или на форумы сообщества, чтобы получить уточнения по конкретным подключениям или конфигурациям.

Если у вас есть дополнительные вопросы или нужна дальнейшая помощь, не стесняйтесь задавать их.

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

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