2013-05-06 48 views
2

我正在編寫一個簡單的LDAP客戶端來通過SSL連接到LDAP服務器。我正在使用「openldap-2.4.35」通過SSL和TLS綁定和驗證LDAP服務器

到目前爲止,我試圖做一個沒有任何加密機制的簡單綁定。 這是我曾嘗試代碼:

#define LDAP_DEPRECATED 1 
#include<stdio.h> 
#include<ldap.h> 

#define HOST "ldap://192.168.1.95:389" 
#define BASEDN "cn=manager,dc=ashwin,dc=com" 

int main(){ 
    LDAP *ld; 
    int rc; 

    LDAPMessage *message; 

    if(ldap_initialize(&ld, HOST))  
    { 
     perror("ldap_initialize"); 
     return(1); 
    } 
    printf("LDAP initialized\n"); 

    rc = ldap_simple_bind_s(ld, BASEDN, "secret"); 
    if(rc != LDAP_SUCCESS) 
    { 
     fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc)); 
     return(1); 
    } 
    printf("Successful authentication\n"); 

    return 0; 
} 

此連接到LDAP和綁定用戶。如果ldap_simple_bind_s成功,則認證成功。

是否有任何文檔用於構建LDAP客戶端以連接到SSL和StartTLS上的LDAP服務器?

回答

3

有如何建立在SSL上的MSDN一個LDAP連接(Win32應用程序)的詳細示例:
Example Code for Establishing a Session over SSL

希望這將是有用的,

+0

感謝您的信息。任何資源爲Linux平臺? – 2013-05-07 09:15:22

+1

對於linux,您可以檢查[LDAP Libraries for C](http://www.novell.com/developer/ndk/ldap_libraries_for_c.html)。有幾個示例包括TLS連接:[用於TLS連接的示例代碼文件](http://www.novell.com/documentation/developer/samplecode/cldap_sample/starttls.c.html) – Bastien 2013-05-07 09:37:05

0
HOST "ldap://192.168.1.95:389" should be: HOST "ldaps://192.168.1.95:636" 

而且, /etc/openssl/ldap.conf,請確保您的頂級根證書包含在pem文件中,例如:

TLS_CACERT /my/top/root/certs.pem 

如果您沒有TLS_CACERT行,請添加一行並確保該pem文件是可讀的:

cat /my/top/root/certs.pem 
-----BEGIN CERTIFICATE----- 
MII... 
....I= 
-----END CERTIFICATE-----