0

下面是我用于连接 LDAPS 服务器的代码

/* Open LDAP Connection */
if( ldap_initialize( &ld, ldapServer ) )//Success Response
{
    perror( "ldap_initialize" );
    //return( OTHER );
}

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"server"
                                                     ofType:@"pem"];
int version =  LDAP_VERSION3;
ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version);    
ldap_set_option(ld, LDAP_OPT_X_TLS_CACERTFILE, NULL);
ldap_set_option(ld, LDAP_OPT_X_TLS_CERTFILE,(__bridge const void *)(filePath));
ldap_set_option(ld, LDAP_OPT_X_TLS_KEYFILE, (__bridge const void *)(filePath));
rc = ldap_start_tls_s(ld, NULL, NULL);  //Failure Response (LDAP_INAPPROPRIATE_MATCHING)
if( rc != LDAP_SUCCESS ){
    printf("start tls failed.\n");
    exit(0);
}

这里 ldap_start_tls_s 给出失败响应(LDAP_INAPPROPRIATE_MATCHING)

任何人都可以在我犯错的地方帮助我。

如果您发现任何有用的链接,请与我分享。

4

1 回答 1

1

转换 from NSStringtoconst void *不可能是正确的:

ldap_set_option(ld, LDAP_OPT_X_TLS_CERTFILE,(__bridge const void *)(filePath));
ldap_set_option(ld, LDAP_OPT_X_TLS_KEYFILE, (__bridge const void *)(filePath));

你可能想要:

ldap_set_option(ld, LDAP_OPT_X_TLS_CERTFILE, [filePath UTF8String]);
ldap_set_option(ld, LDAP_OPT_X_TLS_KEYFILE,  [filePath UTF8String]);
于 2015-03-20T15:58:47.377 回答