В настоящее время у меня есть настройка, в которой пользователи входят на веб-сайт, используя учетные данные 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
надеюсь, это поможет