开发者

PHP LDAP not working securely

开发者 https://www.devze.com 2023-01-13 05:13 出处:网络
I am trying to get a LDAPs client in PHP working. My code is in place, and it works using the standard LDAP protocol.

I am trying to get a LDAPs client in PHP working. My code is in place, and it works using the standard LDAP protocol.

However, when I change ldap://server to ldaps://server, it doesn't work. Setting the debug mode to 7 yields this error. I should add that this a linux server using openSSL.

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

Is there any way to get past this? Changing anything on the LDAP server is not an option as I only have client privileges on it.

EDIT: Only setting in my LDAP开发者_StackOverflow.conf is

TLS_REQCERT never

EDIT2: Here is my code

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);


}


This could be due to a bug in your version of libgnutls

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


First of all, this is for Ryerson? Come on! (I used to work at York U! Gotta tease the guys downtown a little. Could be worse, you could be at U of T!). But seriously, depending on your LDAP server at the backend, there are two usual approaches.

ldaps://ldap.ryerson.ca:636 might work better, in that it will try and do an SSL bind, expecting you have trusted the public key of the CA that signed the certificate in use for SSL.

TLS is really SSL V3.1 and one of the very nice features it adds is that it works fine on port 389 as well, but can issue a StartTLS command which takes a clear text connection you started on 389 and enables encryption.

My suspicion is that from the error code it is trying to make an LDAP over SSL on the clear text port which will fail.

0

精彩评论

暂无评论...
验证码 换一张
取 消