PHP LDAP无法安全运行

时间:2010-08-25 13:58:49

标签: php ldap ssl

我正在尝试在PHP中使用LDAPs客户端。我的代码已经到位,它使用标准的LDAP协议。

但是,当我将ldap:// server更改为ldaps:// server时,它不起作用。将调试模式设置为7会产生此错误。我应该添加一个使用openSSL的linux服务器。

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

有没有办法超越这个?更改LDAP服务器上的任何内容都不是一个选项,因为我只拥有客户端权限。

编辑:只在我的LDAP.conf中设置

  

TLS_REQCERT永远不会

EDIT2:这是我的代码

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 个答案:

答案 0 :(得分:2)

这可能是由于您的libgnutls版本中存在错误

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

答案 1 :(得分:-1)

首先,这是为了瑞尔森?来吧! (我曾经在约克大学工作过!有点戏弄市中心的人。更糟糕的是,你可能会在U of T!)。但严重的是,根据后端的LDAP服务器,有两种常用方法。

ldaps://ldap.ryerson.ca:636可能会更好,因为它会尝试进行SSL绑定,期望您已经信任签署了SSL使用的证书的CA的公钥。

TLS实际上是SSL V3.1,它添加的一个非常好的功能是它在端口389上也可以正常工作,但是可以发出一个StartTLS命令,它接受389启动的明文连接并启用加密。

我怀疑是从错误代码中尝试在明文端口上建立LDAP over SSL,这将失败。