サンプルプログラムはここで保護されたポート(ldaps://)のLDAPサーバーに接続しようとしています。ただし、サンプルプログラムはサーバーにバインドすることができます。SSLを使用してサンプルプログラムを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);
}
しかし、START_TLSでサンプルプログラムが正常にポート10389.のldapsearchクライアント上で実行されているLDAPサーバにバインドするには、サーバーに接続しANSユーザーベースツリーを検索することができます。しかし、上のサンプルプログラムはそうではありません。
それは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));
}
誰かが私がLDAPSを経由してLDAPサーバに結合するために、ここで行方不明です何を指摘することができます:// ?? をここでは、私が追加したものです
私はC++に詳しいことはありませんが、C#ではLDAPSを扱う前と全く同じエラーが発生しています。これを修正したのは、 'VerifyServerCertificate'セッションオプションで常に' delegate {return true} 'を返すことでした:' ldapConnection.SessionOptions.VerifyServerCertificate + = delegate {return true; }; 'C++で同様のことをすることはできますか? – X3074861X