PHP 5.3.1 + Ldap + SSL + Apache + Moodle
Após atualização das versões :
Apache: 2.2.11 para : 2.2.14
PHP : 5.2.8 para: 5.3.1
Moodle : 1.9.6 para: 1.9.7
SO : Windows 2008
A autenticação do Moodle no Ldap (Active Directory ) deixou de funcionar, ou seja, não se conseguia conectar ao servidor do Active Directory para autenticar os usuários.
O Active Directory estava rodando sobre conexão segura (ssl) na porta : 636
Para testar o motivo da não conexão ao Active Directory, fiz um script simples em PHP
<?php
$ip_ad = “ldaps://ip_do_servidor_do AD”;
$user_ad=”esquemauser@nome_dominio”;
$pass_ad = “senha_user_esquemauser”;
$port_ad=”636″;
$dn=”dc=nome_dominio”;
//Conecta ao AD
$ds=ldap_connect($ip_ad ,$port_ad) or die(ldap_error()).”Nâo foi possível conectar ao AD”;
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
$r=ldap_bind($ds,$user_ad,$pass_ad);
if(!$r)
echo “ERROR”;
else
echo “OK”;
//mostra erros do ldap
ldap_get_option($ds,LDAP_OPT_ERROR_STRING,$error);
echo $error;
?>
onde era obtido o seguinte erro do Ldap :
error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
após várias consultas ao google consegui localizar o bug do PHP em
http://bugs.php.net/bug.php?id=48866
onde nos diz que temos que simplesmente alterar o caminho do arquivo : ldap.conf
anteriormente era : C:\OpenLDAP\sysconf\ldap.conf
e na versão 5.3 deverá ser em : c:\ldap.conf
e não se esquecer de restartar o Windows ( não basta apenas restartar o apache)
Indico a leitura dos seguintes artigos :
- conectar-se à instância AD LDS sobre LDAPS usando Ldp.exe (http://technet.microsoft.com/pt-br/library/cc725767%28WS.10%29.aspx#BKMK_3)
- Accessing an LDAP Server over SSL in Windows (http://greg.cathell.net/php_ldap_ssl.html)
- Moodle -Using LDAPS (LDAP + SSL) – (http://docs.moodle.org/en/LDAP_authentication#Using_LDAPS_.28LDAP_.2B_SSL.29)