A ligação ao LDAP usando SSL continua falhando - Windows Server 2008

2

Nosso script continua a falhar sempre que tentar ligar ao LDAP (diretório ativo) usando SSL, estou perplexo. Podemos conectar com sucesso usando o método não seguro, mas estamos tentando realizar alterações de senha que exigem SSL. Nossos snippets de script são os seguintes:

config.php

// SSL

 $LDAPDOMAIN="dc=campus,dc=local";
 $LDAPLOCALDOMAIN="campus.local";
 $LDAPHOST='ldaps://localhost';
 $LDAPPORT=636;
 $ldap = ldap_connect($LDAPHOST, $LDAPPORT) or die ('<p class="message">Error connecting');

 ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
 ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

reset.php (usa config.php)

if ($ldap)  {

  $bind = @ldap_bind($ldap,$username."@".$LDAPLOCALDOMAIN,$password);
  if (!($bind)) {
    @ldap_close($ldap);
    die ('<p class="message">Your password is incorrect, please try again 
      <a href=javascript:history.back()>click here</a><br>');
  }

O que quer que façamos, o script "morre" em reset.php. Quando estávamos usando o LDAP regular, pelo menos poderíamos nos comunicar. Nosso código config.php foi o seguinte:

$ldap = ldap_connect($LDAPHOST) or die ('<p class="message">Error connecting to LDAP');

Agradeço qualquer ajuda e agradeço antecipadamente.

Atualizar *

Eu tentei executar o seguinte programa simples para testar meu LDAP. O SSL ainda não funciona, no entanto o LDAP regular. Isso é um problema de configuração? Meus certificados devem estar ok, eu criei um novo e inscrevi meu servidor. Eu usei um utilitário LDAP que se liga e se conecta muito bem. Apenas não PHP embora.

<?php
    $ldap = ldap_connect("ldaps://localhost/");
    $username="[email protected]";
    $password="password";

    if($bind = ldap_bind($ldap, $username,$password ))
    echo "logged in";
    else
        echo "fail";
        echo "<br/>done";
        ?>

Meu resultado é Fail.

    
por Sean 01.08.2011 / 19:41

2 respostas

3

Obrigado a todos pela ajuda de todos. Eu pude finalmente descobrir o que estava acontecendo, depois de uma pesquisa adicional. Eu sei que não serei a única pessoa que está passando por esse problema agora ou no futuro. Então, por favor, siga as instruções listadas nesses sites, e você será de ouro.

Baixou o arquivo de configuração do primeiro link e seguiu as instruções no segundo link.

O ambiente do servidor Windows pode ser tão desajeitado às vezes.

    
por 02.08.2011 / 22:45
2

Você pode tentar executar ldapsearch e nos fornecer a saída de erro? Seria algo parecido com isto:

ldapsearch -x -d 1 -LLL -H ldaps://localhost -b 'dc=campus,dc=local' -D 'username' -W '(sAMAccountName=username)'

onde os parâmetros são:

  • -x: força a conexão a usar autenticação simples em vez de SASL (emulando a função PHP ldap_bind ())
  • -d 1: mostra a saída de depuração, aumenta o número para mais verbosidade
  • -LLL: altera o formato de saída para remover algumas informações de LDIF que você não precisa para depuração
  • -H: o especificador de URI do host; você pode mudar isso para "ldap: //" para testar a ligação não-SSL
  • -b: o DN de ligação
  • -D: o nome de usuário da credencial de vinculação, CN ou outra string de identificação
  • -W: força ldapsearch a solicitar uma senha

Se você estivesse usando o SASL para se conectar a um servidor do Active Directory por meio de LDAPS, seria necessário definir " maxssf " parâmetro para zero. Eu não sei exatamente como as funções LDAP do PHP funcionam, então pode valer a pena tentar definir esse parâmetro se você puder descobrir como.

    
por 02.08.2011 / 01:50