我正在嘗試讓 Lenny 上的 OpenLDAP 與 StartTLS 一起使用。我有一台 Fedora 13 機器,我將其用作測試客戶端。到目前為止,當我嘗試使用 ldapsearch 進行連線時,Fedora 用戶端忽略 /etc/ldap.conf 中的「host」指令。即使我在使用 ldapsearch 時指定 -H ldaps://server.name,客戶端仍希望連線到 127.0.0.1:389。客戶端電腦上的 /etc/ldap.conf 處於模式 444。
但即使當我嘗試從 ssh 會話本地連接時,我也會看到以下錯誤:
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
有人用線索打了我,請你。
更新:您必須使用 ~/.ldaprc 進行「主機」等設定。另外,我剛剛對 ldap 伺服器使用了 nmap,它顯示 636 和 389 處於開啟狀態。
這是我嘗試連接時打印到螢幕上的內容,ldapsearch -ZZ –x '(objectclass=*)'+ -d -1
ldap_創建 ldap_擴充_操作_s ldap_擴充_操作 ldap_send_initial_request ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host:TCP 192.168.10.41:636 ldap_new_socket:3 ldap_prepare_socket:3 ldap_connect_to_host:試試 192.168.10.41:636 ldap_pvt_connect:fd:3 tm:-1非同步:0 ldap_open_defconn:成功 ldap_發送_伺服器_請求 ber_scanf fmt ({it) ber: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdb8 end=0x9bdbdd7 len=31 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ber_scanf fmt({) 誤碼: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdbd 結束=0x9bdbdd7 len=26 0000:77 18 80 16 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e w...1.3.6.1.4.1。 0010: 31 34 36 36 2e 32 30 30 33 37 1466.20037 ber_flush2: 31 位元組到 sd 3 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_write:想要=31,寫入=31 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_result ld 0x9bd3050 msgid 1 wait4msg ld 0x9bd3050 msgid 1(無限超時) wait4msg continue ld 0x9bd3050 msgid 1 全部 1 ** ld 0x9bd3050 連接: * 主機:192.168.10.41 連接埠:636(預設) refcnt:2 狀態:已連接 最後使用時間: 2010 年 6 月 6 日星期日 12:54:05 ** ld 0x9bd3050 未完成的請求: * msgid 1,origid 1,狀態進行中 未完成推薦 0,家長人數 0 ld 0x9bd3050 請求計數1(廢棄0) ** ld 0x9bd3050 回應佇列: 空的 ld 0x9bd3050 回應計數 0 ldap_chkResponseList ld 0x9bd3050 msgid 1 全部 1 ldap_chkResponseList 回傳 ld 0x9bd3050 NULL ldap_int_select read1msg: ld 0x9bd3050 msgid 1 全部 1 ber_get_next ldap_read:想要=8,得到=0 ber_get_next 失敗。 ldap_err2字串 ldap_start_tls:無法聯繫 LDAP 伺服器 (-1)
答案1
預設情況下,客戶端檢查伺服器的憑證。只需將“TLS_REQCERT never”新增至 /etc/openldap/ldap.conf
答案2
我最近成功地讓 SSL 與 Lenny 上的 SLAPD 一起工作。雖然我不記得我到底做了什麼,但我確實記得它與 GNUTLS 和 OPENSSL 之間的密碼差異有關。 Lenny 的 SLAPD 套件是根據 GNUTLS 編譯的。可能與以下有關這。
答案3
看起來無法讀取密鑰檔。您應該有一個無密碼的密鑰。將 openldap 新增到 ssl-cert 群組。將金鑰 ssl-cert 分組,權限為 440。
答案4
如果您有一個由中間憑證簽署的 SSL 憑證(這在當今並不罕見),您將在 Lenny 下的 slapd 中遇到 TLS 問題。正如 sybreon Lenny slapd 與 GNUTLS 連結所提到的,它不支援您需要的所有選項。
解決方案是使用 slapd 的 Lenny 向後移植。然而我們發現2.4.17-2.1~bpo50+1反向移植針對libdb4.6進行編譯,其中存在一個錯誤,在運行大約一周後影響了我們。
因此,如果您需要 TLS,此時我不建議使用 Lenny 來運行 slapd。升級為擠壓。