
Temos um aplicativo PHP implantado em uma máquina RHEL6 que depende de algumas chamadas ldap para funcionar. Em particular, ldap_connect e ldap_bind são usados para verificar usuários e também para consultar seus detalhes.
Este mecanismo funciona perfeitamente em nosso servidor de desenvolvimento, que roda no servidor Ubuntu. Em nossa máquina de produção, que roda em RHEL6, o processo falha. Em ambos os casos, nos conectamos ao mesmo servidor LDAP usando as mesmas credenciais, então claramente algo está errado no servidor RHEL6. Estamos usando LDAP básico, sem SSL.
Posso confirmar que não há problema de firewall ou rede no novo servidor. O ping para o servidor LDAP funciona perfeitamente. Além disso, uma chamada ldap_connect também é bem-sucedida.
Para isolar o problema de nosso aplicativo, usei o script de teste PHP simples abaixo:
<?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
?>
Estou executando o script acima em ambos os servidores. Em nosso servidor de desenvolvimento, está tudo bem. Em nosso servidor RHEL6, a conexão funciona, mas a ligação falha após um atraso de mais de um minuto:
Mensagem de erro OpenLdap: Não é possível entrar em contato com o servidor LDAP
Não sou administrador de sistema, portanto, não compreendo totalmente a maioria das discussões encontradas sobre esse erro on-line. Espero que alguém aqui possa me ajudar com isso. Muito obrigado antecipadamente.
Responder1
Ao contrário do RHEL5, RHEL6requercertificados SSL (mais especificamente TLS) para conectar-se ao openldap. Dei voltas e mais voltas tentando encontrar uma solução alternativa e finalmente aceitei o fato de que usar um certificado SSL era mais fácil e seguro do que encontrar uma maneira de não usá-lo.
Este link pode ajudar: http://www.linuxquestions.org/questions/linux-enterprise-47/rhel-6-ldap-now-requires-tls-843917/
Você pode tentar forçar o modo legado e isso pode funcionar, mas descobri que não funciona completamente e você poderá ver problemas mais tarde.
authconfig --enableldap --enableldapauth --forcelegacy=yes --ldapserver=myldapserver.com --ldapbasedn="dc=example,dc=com" --update
Responder2
Para centos7/RHEL7, altere seus valores:
authconfig --enableforcelegacy --enableshadow --enablemd5 --enableldap --enableldapauth --disableldaptls --ldapserver=127.0.0.1 --ldapbasedn="dc=**ldap,dc=***.uk" --enablemkhomedir --disablesssd --disablesssdauth --update