通过SSL和TLS绑定和验证LDAP服务器

问题描述:

我正在编写一个简单的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服务器?

有如何建立在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

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