我正在编写一个简单的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 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服务器?
答案 0 :(得分:3)
有一个关于如何在MSDN上建立SSL上的ldap连接的详细示例(对于win32应用程序):
Example Code for Establishing a Session over SSL
希望这会有用,
答案 1 :(得分: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-----