可以连接到 LDAP 服务器,但无法绑定:OpenLdap 错误消息:无法联系 LDAP 服务器

可以连接到 LDAP 服务器,但无法绑定:OpenLdap 错误消息:无法联系 LDAP 服务器

我们在 RHEL6 机器上部署了一个 PHP 应用程序,该应用程序依赖一些 ldap 调用来运行。具体来说,ldap_connect 和 ldap_bind 用于验证用户并查找其详细信息。

这种机制在我们运行 Ubuntu 服务器的开发服务器上运行良好。在我们运行 RHEL6 的生产机器上,该过程失败。在这两种情况下,我们使用相同的凭据连接到同一个 LDAP 服务器,因此显然 RHEL6 服务器上出了问题。我们使用的是基本 LDAP,没有 SSL。

我可以确认新服务器上没有防火墙或网络问题。Ping 到 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 证书比不使用 ssl 证书更简单、更安全的事实。

这个链接可能有帮助: http://www.linuxquestions.org/questions/linux-enterprise-47/rhel-6-ldap-now-requires-tls-843917/

您可以尝试强制使用传统模式,这可能会有效,但我发现它并不完全有效,并且您以后可能会遇到问题。

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 

相关内容