无法通过SSL将示例程序绑定到LDAP服务器(ldaps://)

Ash*_*mar 6 c c++ linux ldap openldap

我这里有一个示例程序试图连接到安全端口上的LDAP服务器(ldaps://)但是,示例程序无法绑定到服务器.

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

#define BIND_DN "dc=example,dc=com"
#define BIND_PW "secret"

int main() {
    LDAP *ld;
    int rc;
    int reqcert = LDAP_OPT_X_TLS_NEVER;
    int version = LDAP_VERSION3;
    int ret(0);

    if (ldap_initialize (&ld, "ldaps://192.168.1.51:10636")) {
        perror("ldap_init"); /* no error here */
        return(1);
    }

    ldap_set_option (ld, LDAP_OPT_PROTOCOL_VERSION, &version);
    ldap_set_option (ld, LDAP_OPT_X_TLS_REQUIRE_CERT, &reqcert);

    rc = ldap_bind_s(ld, BIND_DN, BIND_PW, LDAP_AUTH_SIMPLE);

    if( rc != LDAP_SUCCESS )
    {
        fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc) );
        return( 1 );
    }
    printf("Initial Authentication successful\n");
    ldap_unbind(ld);
}
Run Code Online (Sandbox Code Playgroud)

但是,使用START_TLS,示例程序成功绑定到在端口10389上运行的LDAP服务器.ldapsearch客户端能够连接到服务器并搜索用户基础树.但上面的示例程序没有.

要使其与START_TLS一起使用:以下是我添加的内容:

ldap_set_option (ld, LDAP_OPT_X_TLS_REQUIRE_CERT, &reqcert);    
rc = ldap_start_tls_s(ld, NULL, NULL);
    if (rc != LDAP_SUCCESS) {
        printf("ldap_start_tls() %s",ldap_err2string(ret));
    }
Run Code Online (Sandbox Code Playgroud)

有人可以指出我在这里通过ldaps绑定到LDAP服务器的错误:// ??

小智 1

编辑/etc/openldap/ldap.conf,添加行:

TLS_REQCERT 从不

然后再试一次。