2012-04-23 284 views
0

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

我尝试这个例子:

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(本地主机)作为主机。

OpenLDAP的调试日志看起来是这样的:
TLS跟踪:SSL_accept:SSLv3的刷新数据
tls_read:想= 5错误=未知错误
TLS跟踪:SSL_accept:此为SSLv3错误读取客户证书一
TLS跟踪:SSL_accept:在SSLv3的错误读取的客户端证书甲
守护程序:1个描述符活动
守护程序:唤醒
守护程序:WSselect:听= 2 active_threads = 0 TVP = NULL
守护程序:WSselect:听= 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

发现这篇文章:http://www.openldap.org/lists/openldap-technical/200903/msg00061.html。看起来您可能需要更改TLSCipherSuite HIGH:MEDIUM:-SSLv2至TLSCipherSuite HIGH:MEDIUM:+ SSLv2。

+0

谢谢你的回应。我按照您的建议(TLSCipherSuite HIGH:MEDIUM:+ SSLv2)更新了OpenLDAP服务器slapd.conf文件,但似乎仍然无法正常工作。 的ldap_connect(pLdapConnection,NULL)调用仍然返回值81和OpenLDAP的调试日志样子(抱歉格式): TLS跟踪:SSL_accept:SSLv3的刷新数据
tls_read:想= 5错误=未知错误
TLS跟踪:SSL_accept:此为SSLv3错误读取客户证书一个
TLS跟踪:SSL_accept:此为SSLv3错误读取客户证书一个
守护程序:1个描述
守护活动:唤醒
Tuppu 2012-04-25 06:45:01

+0

你有一些其他的想法?如果我在slapd.conf中配置了“TLSVerifyClient never”,您是否将证书视为潜在问题还是其他问题?或者系统域可能导致一些问题? – Tuppu 2012-04-25 07:06:57