Не удалось запустить сервер Apache после настройки проверки подлинности клиента - PullRequest
1 голос
/ 01 мая 2019

CentOS 7 | Apache 2.4.6


Я создал частный центр сертификации (ЦС) и два сертификата (один для сервера и один для клиента).

Затем я настроил Apache на использование сертификата X.509 для ответа на HTTPS-соединения, и все прошло нормально (я видел это в браузере).

Затем, когда я настраивал Client Authentication, перезапустилсясервер и получил следующую ошибку:

Задание для httpd.service завершилось неудачно, поскольку процесс управления завершился с кодом ошибки.См. Подробности в «systemctl status httpd.service» и «journalctl -xe».

Теперь отображается «Синтаксис ОК», но я все еще не могу запустить сервер, получая следующие ошибки, используякоманды:

.systemctl status httpd.service

[root@localhost ~]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2019-05-01 18:35:40 WEST; 2min 3s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 12292 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 12288 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 12288 (code=exited, status=1/FAILURE)

May 01 18:35:37 src_ca systemd[1]: Starting The Apache HTTP Server...
May 01 18:35:40 src_ca systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
May 01 18:35:40 src_ca kill[12292]: kill: cannot find process ""
May 01 18:35:40 src_ca systemd[1]: httpd.service: control process exited, code=exited status=1
May 01 18:35:40 src_ca systemd[1]: Failed to start The Apache HTTP Server.
May 01 18:35:40 src_ca systemd[1]: Unit httpd.service entered failed state.
May 01 18:35:40 src_ca systemd[1]: httpd.service failed.

. "journalctl -xe"

May 01 18:39:16 src_ca polkitd[2607]: Registered Authentication Agent for unix-process:12474:9099194 (system bus name :1.157 [/usr/bin/pkttyagent --notify-fd 5 --fallba
May 01 18:39:16 src_ca systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has begun starting up.
May 01 18:39:18 src_ca systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
May 01 18:39:18 src_ca kill[12483]: kill: cannot find process ""
May 01 18:39:18 src_ca systemd[1]: httpd.service: control process exited, code=exited status=1
May 01 18:39:18 src_ca systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit httpd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit httpd.service has failed.
--
-- The result is failed.
May 01 18:39:18 src_ca systemd[1]: Unit httpd.service entered failed state.
May 01 18:39:18 src_ca systemd[1]: httpd.service failed.
May 01 18:39:18 src_ca polkitd[2607]: Unregistered Authentication Agent for unix-process:12474:9099194 (system bus name :1.157, object path /org/freedesktop/PolicyKit1/

Я оставлю ниже процесс, который я использовал для настройки Аутентификации клиента.Я оставлю несколько полезных файлов внизу вопроса.


Процедура настройки аутентификации клиента

  1. Началось с поиска опции «SSLCACertificateFile» в файле «/etc/httpd/conf.d/ssl.conf»: vi +/SSLCACertificateFile /etc/httpd/conf.d/ssl.conf

  2. Обновлен путь до: /etc/pki/CA/certs/ca.crt

Это расположение сертификата для CA.

Примечание: сертификат клиента находится в папке / etc / pki / CA /. сертификатыЯ не уверен, если это вызывает какие-либо проблемы при настройке аутентификации клиента.( Обновление: редактировать 1 )

Удалено «#» в директиве «SSLVerifyClient require».

Сохранено измененное и выход из файла с :wq, а затем перезапуск сервера: systemctl restart httpd


Полезные файлы для отладки

.«etc / hosts» (добавление IP + хост)

etc/hosts

.«/ etc / hostname» (можно сделать с помощью hostnamectl set-hostname new-hostname)

/etc/hostname

."etc / httpd / conf / httpd.conf"

etc/httpd/conf/httpd.conf

."/etc/httpd/conf.d/ssl.conf"

/etc/httpd/conf.d/ssl.conf

."/ var / log / httpd / error_log"

[Wed May 01 18:18:13.050768 2019] [core:notice] [pid 11416] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Wed May 01 18:18:13.053282 2019] [suexec:notice] [pid 11416] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[We May 01 18:18:16.238779 2019] [ssl:emerg] [pid 11416] AH02311: Fatal error initialising mod_ssl, exiting. See /etc/httpd/logs/ssl_error_log for more information

."/ var / log / httpd / ssl_error_log"

[Wed May 01 18:18:16.238749 2019] [ssl:emerg] [pid 11416] AH01895: Unable to configure verify locations for client authentication

1 Ответ

1 голос
/ 02 мая 2019

Я использовал сертификат, созданный в другом контексте, перезапустил Apache, ошибки не показывались.

Это означает, что ошибка должна быть в сертификате.

Учитывая это, я внимательно посмотрел процедуру, которую я использовал для построения CA (я добавлю процедуру в нижней части этого ответа), и обнаружил ошибку.

Я использовал «временный» сертификат вместо cacert.pem.


Процедура создания ЦС:

  1. openssl genrsa -des3 -out /etc/pki/CA/private/cakey.pem

  2. openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/ca.crt

  3. openssl x509 -req -days 100 -in ca.crt -out cacert.pem -signkey private/cakey.pem

...