Se puede conectar al servidor LDAP, pero no se puede vincular: Mensaje de error de OpenLdap: No se puede contactar con el servidor LDAP

Se puede conectar al servidor LDAP, pero no se puede vincular: Mensaje de error de OpenLdap: No se puede contactar con el servidor LDAP

Tenemos una aplicación PHP implementada en una máquina RHEL6 que depende de algunas llamadas ldap para funcionar. En particular, ldap_connect y ldap_bind se utilizan para verificar usuarios y también para buscar sus detalles.

Este mecanismo funciona bien en nuestro servidor de desarrollo, que se ejecuta en el servidor Ubuntu. En nuestra máquina de producción, que funciona con RHEL6, el proceso falla. En ambos casos, nos conectamos al mismo servidor LDAP usando las mismas credenciales, por lo que claramente algo anda mal en el servidor RHEL6. Estamos usando LDAP básico, nada de SSL.

Puedo confirmar que no hay ningún problema de firewall o de red en el nuevo servidor. Hacer ping al servidor LDAP funciona bien. Además, una llamada ldap_connect también es exitosa.

Para aislar el problema de nuestra aplicación, utilicé el siguiente script de prueba PHP simple:

<?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

?>

Estoy ejecutando el script anterior en ambos servidores. En nuestro servidor de desarrollo, todo está bien. En nuestro servidor RHEL6, la conexión funciona, pero el enlace falla después de un retraso de más de un minuto:

Mensaje de error de OpenLdap: No se puede contactar con el servidor LDAP

No soy administrador de sistemas en absoluto, por lo tanto, no comprendo completamente la mayoría de las discusiones que se encuentran en línea sobre este error. Espero que alguien aquí pueda ayudarme con esto. Muchas gracias de antemano.

Respuesta1

A diferencia de RHEL5, RHEL6requiereCertificados SSL (más específicamente TLS) para conectarse a openldap. Di vueltas y vueltas tratando de encontrar una solución y finalmente me conformé con el hecho de que usar un certificado SSL era más fácil y seguro que encontrar una manera de no usarlo.

Este enlace podría ayudar: http://www.linuxquestions.org/questions/linux-enterprise-47/rhel-6-ldap-now-requires-tls-843917/

Puedes intentar forzar el modo heredado, y eso puede funcionar, pero descubrí que no funciona del todo y es posible que veas problemas más adelante.

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

Respuesta2

Para centos7/RHEL7, cambie sus valores:

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

información relacionada