PHP LDAP не работает надежно - PullRequest
2 голосов
/ 25 августа 2010

Я пытаюсь заставить клиента LDAP работать на PHP.Мой код на месте, и он работает с использованием стандартного протокола LDAP.

Однако, когда я меняю ldap: // server на ldaps: // server, он не работает.Установка режима отладки на 7 приводит к этой ошибке.Я должен добавить, что это сервер Linux, использующий openSSL.

TLS: can't connect: The Diffie Hellman prime sent by the server is not acceptable (not long enough)..

Есть ли способ обойти это?Изменять что-либо на сервере LDAP нельзя, так как у меня на нем только привилегии клиента.

РЕДАКТИРОВАТЬ: в моем LDAP.conf установлено только

TLS_REQCERT никогда

РЕДАКТИРОВАТЬ2: Вот мой код

if(isset($_POST['pass'])){
    $username = $_POST['user'];
    $password = $_POST['pass'];

    ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);



    $ds=ldap_connect("ldaps://server.com");  

    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) ;
    //Check LDAP server for user
        if(!@ldap_bind($ds, "uid={$username},ou=people,o=site.ca,o=site", "{$password}") || strlen($password)==0){
    //      LDAP login was not successful
            printf("Sorry, wrong username/password\n\n\n");
            return;
        }

    $ldapSearch=@ldap_search($ds, "ou=people,o=site.ca,o=site", "uid={$_POST['user']}");
    $result = @ldap_get_entries($ds, $ldapSearch);


}

Ответы [ 2 ]

2 голосов
/ 02 октября 2010

Это может быть связано с ошибкой в ​​вашей версии libgnutls

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=440344

0 голосов
/ 25 августа 2010

Прежде всего, это для Райерсона?Давай!(Раньше я работал в York U! Должен немного дразнить парней в центре города. Могло быть и хуже, вы могли бы быть в U of T!).А если серьезно, в зависимости от вашего сервера LDAP в бэкэнде, есть два обычных подхода:

ldaps: //ldap.ryerson.ca: 636 может работать лучше, поскольку он попытается выполнить привязку SSL,ожидается, что вы доверяете открытому ключу CA, подписавшего сертификат, используемый для SSL.

TLS - это действительно SSL V3.1, и одна из очень приятных функций, которую он добавляет, заключается в том, что он отлично работает на порту 389, такхорошо, но может выдать команду StartTLS, которая берет соединение с открытым текстом, которое вы установили на 389, и включает шифрование.

Я подозреваю, что из кода ошибки он пытается создать LDAP через SSL для порта открытого текста, что не удастся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...