我想使用 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,托莫