Я пытаюсь установить аутентификацию LDAPS на Zabbix 2.4, но это не работает. Вот infos на моей конфигурации:
Пакеты PHP установили: libapache2-mod-php5 php-pear php5 php5-cli php5-common php5-curl php5-gd php5-imagick php5-json php5-ldap php5-mysqlnd php5-pgsql php5-readline php5-sasl zabbix-frontend-php
Эта команда работает:
ldapsearch-H ldaps://ldaps.mptest.be:636-D cn=reader, dc=antidot, dc=prv-W-b ou=people, dc=antidot, dc=prv
Тот же URI, OU, вход в систему, пароль в Аутентификации, LDAP устанавливают страницу на zabbix, у меня есть это:
ldap_bind (): Не мог связать с сервером: не Может связаться с сервером LDAP
[аутентификация php:120 CLdapAuthValidator-> проверяет () → CLdap-> увольнительная записка () → ldap_bind () в/usr/share/zabbix/include/classes/ldap/CLdap.php:112] LDAP: не может связать данным, Связывают DN. Имя для входа в систему или пароль являются неправильными!
Вот содержание/etc/ldap/ldap.conf: TLS_REQCERT allow BASE dc=antidot,dc=prv URI ldaps://ldap.mptest.be TLS_CACERTDIR /etc/ssl/mptest/wildcard_mptest_be.ca
(Аутентификация без SSL, на порте 386 не возможна),
Я решил эту проблему, посетив веб-интерфейс Zabbix, затем перейдя к Administration -> Authentication -> LDAP и изменив параметр LDAP host с имени хоста (например, ldap.example.com
) на его IP-адрес (например, ldap.example.com
), 10.6.10.10
).
PHP LDAP, честно говоря, чистая чушь. Некоторое время назад я тоже боролся с Zabbix и LDAPS. Можно сделать все на 100% правильно, но все равно ничего не получится. Так что не беспокойтесь, проблема здесь не на вашей стороне.
Чтобы это заработало, вы должны отключить проверку сертификатов TLS / SSL в OpenLDAP.LDAP PHP использует библиотеки OpenLDAP, поэтому загружены и имеют значение /etc/openldap/ldap.conf
или ~ / .ldaprc
. (Это можно увидеть, используя пример запроса PHP LDAP и запустив его с помощью strace -e trace = open php example.php
). Проблема здесь, похоже, находится в области использования PHP библиотек OpenLDAP, некоторые отсутствующие / неправильные / не реализованные вызовы для успешной проверки сертификата TLS. Для исправления этого потребуется исправление PHP.
TLS_REQCERT никогда
не должен быть параметром, необходимым для этого. Настройки URL и OU / DC в ldap.conf не должны иметь значения, поскольку они предоставляются из конфигурации Zabbix. Я настоятельно рекомендую изменить это в ~ / .ldaprc
домашнего каталога вашего веб-сервера, чтобы не влиять на другие приложения, использующие LDAPS.
Это решение не очень хорошее, но все же лучше, чем возвращаться к незашифрованный LDAP. И чтобы уточнить, я попробовал вручную разместить CACerts для OpenLDAP, восстановить кеш сертификатов и установить TLS_REQCERT
на всегда
. Это отлично работало, например, ldapsearch
(использует ту же библиотеку, что и PHP), но по-прежнему не работает с функцией LDAP PHP. Так что эта попытка, скорее всего, будет пустой тратой времени. Я не пытался разместить сертификат клиента и использовать TLS_KEY / TLS_CERT
, как указано в ответе от @jouflux. Если это сработает, это будет лучшим решением.