【问题标题】:Secure LDAP authentication安全 LDAP 身份验证
【发布时间】: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, 托莫

【问题讨论】:

    标签: c++ windows ldap


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我按照您的建议更新了 OpenLDAP 服务器 slapd.conf 文件(TLSCipherSuite HIGH:MEDIUM:+SSLv2),但它似乎仍然无法正常工作。 ldap_connect(pLdapConnection, NULL) 调用仍然返回值 81,并且 openLDAP 调试日志看起来像(对格式化感到抱歉): TLS 跟踪:SSL_accept:SSLv3 刷新数据
      tls_read: want=5 error=Unknown error
      TLS 跟踪:SSL_accept:SSLv3 读取客户端证书 A 中的错误
      TLS 跟踪:SSL_accept:SSLv3 读取客户端证书 A 中的错误
      守护进程:1 描述符上的活动
      守护进程:唤醒
    • 您还有其他想法吗?您是否认为证书是一个潜在问题,或者是因为我在 slapd.conf 中配置了“TLSVerifyClient never”而在其他地方出现了问题?还是系统域会导致一些问题?
    猜你喜欢
    • 2011-05-04
    • 2013-03-15
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多