Подключиться к серверу LDAP можно, но привязать невозможно: Сообщение об ошибке OpenLdap: Невозможно связаться с сервером LDAP

Подключиться к серверу LDAP можно, но привязать невозможно: Сообщение об ошибке OpenLdap: Невозможно связаться с сервером LDAP

У нас есть приложение PHP, развернутое на машине RHEL6, которое использует некоторые вызовы ldap для своей работы. В частности, ldap_connect и ldap_bind используются для проверки пользователей, а также для поиска их данных.

Этот механизм отлично работает на нашем сервере разработки, который работает на сервере Ubuntu. На нашей рабочей машине, которая работает на RHEL6, процесс дает сбой. В обоих случаях мы подключаемся к одному и тому же серверу LDAP, используя одни и те же учетные данные, так что очевидно, что на сервере RHEL6 что-то не так. Мы используем базовый LDAP, без SSL.

Я могу подтвердить, что на новом сервере нет проблем с брандмауэром или сетью. Пинг на сервер LDAP работает отлично. Также успешно проходит вызов ldap_connect.

Чтобы изолировать проблему от нашего приложения, я использовал следующий простой тестовый PHP-скрипт:

<?php 
// Set the ldap server
$ldapurl = "[snipped]";
$ldapuser = "[snipped]";
$ldappass = "[snipped]";
// Set the debug flag
$debug = true;

// Set debugging
if ($debug) {
  ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
}

// connect to ldap server
echo "Trying to connect<br/>";
echo "1: " . date('l jS \of F Y h:i:s A') . "<br/>";
$ldapconn = ldap_connect($ldapurl) or die ("Couldn't connect"); 
echo "2: " . date('l jS \of F Y h:i:s A') . "<br/>";

// binding to ldap server
echo "Trying to bind with $ldapuser - $ldappass<br/>";
echo "3: " . date('l jS \of F Y h:i:s A') . "<br/>";
$ldapbind = @ldap_bind($ldapconn, $ldapuser, $ldappass);
echo "4: " . date('l jS \of F Y h:i:s A') . "<br/>";

if (!$ldapbind) {
echo "Unable to bind to server $ldapurl\n";
echo "OpenLdap error message: " . ldap_error($ldapconn) . "\n";
exit;
}

// Rest of code goes here

?>

Я запускаю этот скрипт на обоих серверах. На нашем сервере разработки все хорошо. На нашем сервере RHEL6 соединение работает, но привязка терпит неудачу после задержки более минуты:

Сообщение об ошибке OpenLdap: Невозможно связаться с сервером LDAP

Я вообще не сисадмин, поэтому большинство обсуждений, которые я нашел в сети по этой ошибке, я не полностью понимаю. Надеюсь, кто-нибудь здесь сможет мне помочь с этим. Заранее большое спасибо.

решение1

В отличие от RHEL5, RHEL6требуетсертификаты ssl (точнее TLS) для подключения к openldap. Я долго искал обходной путь и в конце концов остановился на том, что использовать сертификат ssl было проще и безопаснее, чем искать способ не использовать его.

Эта ссылка может быть полезна: http://www.linuxquestions.org/questions/linux-enterprise-47/rhel-6-ldap-now-requires-tls-843917/

Вы можете попробовать принудительно включить режим Legacy, и это может сработать, но я обнаружил, что он работает не полностью, и в дальнейшем вы можете столкнуться с проблемами.

authconfig --enableldap --enableldapauth --forcelegacy=yes --ldapserver=myldapserver.com --ldapbasedn="dc=example,dc=com" --update 

решение2

Для centos7/RHEL7 измените значения на следующие:

authconfig --enableforcelegacy --enableshadow --enablemd5 --enableldap --enableldapauth --disableldaptls --ldapserver=127.0.0.1 --ldapbasedn="dc=**ldap,dc=***.uk" --enablemkhomedir --disablesssd --disablesssdauth  --update 

Связанный контент