問題描述
我正在使用OpenLDAP服務器使用Ubuntu 12.04。我遵循了instructions on the Ubuntu help pages,可以在沒有安全性的情況下愉快地連接。要測試我的連接,我正在使用ldapsearch
,該命令如下所示:
ldapsearch -xv -H ldap://ldap.[my host].local -b dc=[my domain],dc=local -d8 -ZZ
我也用過:
ldapsearch -xv -H ldaps://ldap.[my host].local -b dc=[my domain],dc=local -d8
據我所知,我已經正確設置了證書,但是無論為什麽嘗試,我似乎都無法讓ldapsearch
接受我的self-signed證書。
到目前為止,我已經嘗試過:
-
更新我的
/etc/ldap/ldap.conf
文件看起來像:
BASE dc=[my domain],dc=local URI ldaps://ldap.[my host].local TLS_CACERT /etc/ssl/certs/cacert.crt TLS_REQCERT allow
-
更新我的
/etc/ldap.conf
文件看起來像:
base dc=[my domain],dc=local uri ldapi:///ldap.[my host].local uri ldaps:///ldap.[my host].local ldap_version 3 ssl start_tls ssl on tls_checkpeer no TLS_REQCERT allow
-
更新我的
/etc/default/slapd
以包括:SLAPD_SERVICES =“ ldap:///ldapi:///ldaps:///” -
幾個小時的穀歌搜索,大部分時間導致添加了
TLS_REQCERT allow
我看到的確切錯誤是:
ldap_initialize( ldap://ldap.[my host].local )
request done: ld 0x20038710 msgid 1
TLS certificate verification: Error, self signed certificate in certificate chain
TLS: can't connect.
ldap_start_tls: Connect error (-11)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
經過幾個小時的處理,我希望其他人已經看到此問題,並且/或者知道如何解決它。請告知我是否應該添加更多信息,或者是否需要其他數據。
最佳回答
問題是Ubuntu 12.04附帶的GnuTLS版本使用有缺陷的加密back-end。
應該將GnuTLS從使用gcrypt作為加密back-end切換到蕁麻,但是存在許可問題。具體來說,某些GPL許可證允許與更新或較舊版本的GPL鏈接,而某些則不允許。
您可以從配置了蕁麻的源中重建GnuTLS,也可以按照Howard Chu建議的方式修改gcrypt。有關前者的說明在此錯誤報告中。
https://bugs.launchpad.net/bugs/926350
次佳回答
將LDAPTLS_REQCERT
變量設置為never
以忽略服務器上可能過期或無效的證書,即:
LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"
或檢查服務器是否具有正確的證書。
第三種回答
在運行ldapsearch的客戶端計算機上,必須具有ldap.conf
TLS_CACERT /etc/ssl/certs/cacert.crt
我已經從服務器配置中複製了存儲CA證書的路徑。將CA證書從服務器複製到與路徑相同位置的客戶端。
看到這裏-http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html