我想使用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(dec)。
我从这里开始将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 error =未知错误
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 HIGH:MEDIUM:-SSLv2
TLSCertificateFile ./secure/certs/server.pem
TLSCertificateKeyFile ./secure/certs/server.pem
TLSCACertificateFile ./secure/certs/server.pem
有人知道ldap_connect失败的原因吗?
或者有人知道有关此主题的有用教程或C ++代码示例吗?我特别不清楚客户端证书是如何链接到客户端代码的。换句话说,它是如何在客户端C ++代码中定义的,其中证书是在身份验证期间获得的。
BR, 脱膜
答案 0 :(得分:0)
找到这篇文章:http://www.openldap.org/lists/openldap-technical/200903/msg00061.html。看起来您可能想要更改TLSCipherSuite HIGH:MEDIUM:-SSLv2 to TLSCipherSuite HIGH:MEDIUM:+ SSLv2。