簡體   English   中英

PHP LDAP無法安全運行

[英]PHP LDAP not working securely

我正在嘗試使LDAPs客戶端在PHP中工作。 我的代碼已經到位,並且可以使用標准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);


}

這可能是由於您的libgnutls版本中的錯誤

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

首先,這是給瑞爾森的嗎? 來吧! (我以前在約克大學工作!一定會嘲笑市中心的家伙。更糟糕的是,您可能在T的大學工作!)。 但是請認真考慮,取決於后端的LDAP服務器,通常有兩種方法。

ldaps://ldap.ryerson.ca:636可能會更好,因為它將嘗試並進行SSL綁定,因為您已經信任簽署了用於SSL證書的CA的公鑰。

TLS實際上是SSL V3.1,它添加的一個非常不錯的功能是它在端口389上也可以正常工作,但是可以發出StartTLS命令,該命令將采用您從389開始的明文連接並啟用加密。

我懷疑是從錯誤代碼開始,它試圖在純文本端口上通過SSL進行LDAP認證,這將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM