0

我想使用 OpenLDAP 服务器从 C++ 客户端应用程序安全地进行身份验证,例如,使用 SSL/TLS 或 SASL。我使用的是 Windows 7 64 位操作系统。

我试过这个例子:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366105%28v=vs.85%29.aspx

但它在此函数调用中失败: ULONG ldapConn = ldap_connect(pLdapConnection, NULL);

ldap_connect 的返回码是 81(十进制)。

我已经从这里将 OpenLDAP 安装到我的计算机上:

http://www.userbooster.de/en/download/openldap-for-windows.aspx

我使用 127.0.0.1 (localhost) 作为主机。

OpenLDAP 调试日志如下所示:
TLS 跟踪:SSL_accept:SSLv3 刷新数据
tls_read:want=5 错误=未知错误
TLS 跟踪:SSL_accept:SSLv3 读取客户端证书中的错误 TLS 跟踪:SSL_accept:SSLv3 读取客户端证书
中的错误
守护进程: 1 个描述符
守护进程上的活动:唤醒
守护进程:WSselect:listen=2 active_threads=0 tvp=NULL
守护进程:WSselect:listen=3 active_threads=0 tvp=NULL

根据日志,这似乎与证书有关。OpenLDAP 配置是安装包中的默认配置,例如:

TLSVerifyClient 从不
TLSCipherSuite HIGH:MEDIUM:-SSLv2
TLSCertificateFile ./secure/certs/server.pem
TLSCertificateKeyFile ./secure/certs/server.pem
TLSCACertificateFile ./secure/certs/server.pem

有人知道为什么 ldap_connect 失败吗?

或者有人知道有关此主题的有用教程或 C++ 代码示例吗?我特别不清楚客户端证书如何链接到客户端代码。换句话说,它是如何在客户端 C++ 代码中定义的,在身份验证期间获取证书的位置。

BR,托莫

4

1 回答 1

0

找到这篇文章:http ://www.openldap.org/lists/openldap-technical/200903/msg00061.html 。看起来您可能想要将 TLSCipherSuite HIGH:MEDIUM:-SSLv2 更改为 TLSCipherSuite HIGH:MEDIUM:+SSLv2。

于 2012-04-24T21:17:09.397 回答