C语言 通过SSL和TLS与LDAP服务器绑定和认证



我正在编写一个简单的LDAP客户机,通过SSL连接到LDAP服务器。我使用的是"openldap-2.4.35"

到目前为止,我尝试做一个简单的绑定,没有任何加密机制。以下是我尝试过的代码:
#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 initializedn");
    rc = ldap_simple_bind_s( ld, BASEDN, "secret" );
    if( rc != LDAP_SUCCESS )
    {
        fprintf(stderr, "ldap_simple_bind_s: %sn", ldap_err2string(rc) );
        return( 1 );
    }
    printf( "Successful authenticationn" );
    return 0;
}

连接LDAP并绑定用户。如果ldap_simple_bind_s成功,则鉴权成功。

是否有关于构建LDAP客户端以连接到SSL和StartTLS上的LDAP服务器的文档?

有一个关于如何在MSDN上通过SSL建立ldap连接的详细示例(用于win32应用程序):
通过SSL建立会话示例代码

希望对大家有帮助

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

最新更新