【发布时间】:2012-04-23 19:41:27
【问题描述】:
我想使用 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: 想要=5 错误=未知错误
TLS 跟踪:SSL_accept:SSLv3 读取客户端证书 A 中的错误
TLS 跟踪:SSL_accept:SSLv3 读取客户端证书 A 中的错误
守护进程:1 个描述符上的活动
守护进程:唤醒
守护进程:WSselect:listen=2 active_threads=0 tvp=NULL
守护进程:WSselect:listen=3 active_threads=0 tvp=NULL
根据日志,这似乎与证书有关。 OpenLDAP 配置是安装包中的默认配置,例如:
TLSVerifyClient 从不
TLSCipherSuite 高:中:-SSLv2
TLSCertificateFile ./secure/certs/server.pem
TLSCertificateKeyFile ./secure/certs/server.pem
TLSCACertificateFile ./secure/certs/server.pem
有人知道 ldap_connect 失败的原因吗?
或者有人知道有关此主题的有用教程或 C++ 代码示例吗?我特别不清楚客户端证书如何链接到客户端代码。换句话说,它是如何在客户端 C++ 代码中定义的,在身份验证期间获取证书的位置。
BR, 托莫
【问题讨论】: