2012-04-23 328 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