Назад | Перейти на главную страницу

Apache / PHP ldap перестает работать. Требуется перезапуск apache

В настоящее время у меня есть настройка, в которой пользователи входят на веб-сайт, используя учетные данные LDAP. Это все внутреннее, так что мне плевать на сертификаты. Итак, в моем /etc/openldap/ldap.conf файл у меня есть TLS_REQCERT never. Перед добавлением этого в файл я всегда получал ошибку Error Binding to LDAP: TLS: hostname does not match CN in peer certificate. После добавления этого все вроде работает нормально. Однако теперь я нахожу, что через некоторое время, может быть, от нескольких часов до дня, вход в систему снова завершится ошибкой, и я начну получать эту ошибку. Если я перезапущу apache, все снова будет работать нормально. Потом снова выскакивает ошибка. Что могло заставить это продолжаться? Сервер - CentOS 6.5.

Это дикий выстрел в темноте, поэтому, если он ошибается, я прошу прощения за то, что привел вас в неправильном направлении. Возможно, в вашей службе ldap заканчиваются доступные файловые дескрипторы (каждое сетевое соединение потребляет один FD). На моих серверах ldap я увеличил ограничения по умолчанию:

OVZ-CentOS65[root@ldap1 ~]# more /etc/security/limits.d/ldap.conf 
@ldap           soft    nofile          100000
@ldap           hard    nofile          200000

Попробуйте добавить это (или настроить любой файл, который в настоящее время может управлять ограничениями пользователей, групп или процессов для ldap) и перезапустите службу ldap. Посмотрите, сохраняются ли симптомы с apache.

Вы должны проверить действительность сертификата, возможно, проблема связана с этой ошибкой:

TLS_REQCERT = никогда не игнорируется, когда срок действия сертификата эмитента истек

Резюме:

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

Настройка TLS_REQCERT=never игнорируется, когда сертификат сервера до после срок годности. В этот момент происходит сбой подключения.

Версия-Номер выпуска выбранного компонента (если применимо):

openldap-2.4.23-15.el6
openldap-2.4.24-3.fc15

Насколько воспроизводимо:

Настройте сертификаты в slapd, чтобы разрешить TLS / SSL. Сертификат может быть недействительным (неверный эмитент, неверное имя сервера и т. Д.).

Бегать: LDAPTLS_REQCERT=never ldapsearch -x -ZZ ...

Выполнение будет успешным, будет использоваться TLS.

Измените системное время истечения срока действия сертификата. Снова выполните ту же команду. На этот раз команда не сработает.


Обновить:
Вы отключили проверку сертификатов в OpenLDAP ldap.conf (что должно относиться и к php-ldap).
Добавьте в свой PHP-код перед ldap_connect, поместите следующее:

putenv('LDAPTLS_REQCERT=never');

Нужна помощь в игнорировании сертификата сервера при привязке к серверу LDAP с использованием PHP

Как решить проблему ldap_start_tls () «Невозможно запустить TLS: ошибка подключения» в PHP?


Обновление 2:

Другая проблема может заключаться в том, что сервер apache не принимает ldap.conf файл конфигурации правильно, просмотрите эти ссылки, где описана проблема:

http://php.net/manual/en/function.ldap-connect.php#36156

надеюсь, это поможет