Ldap
無法通過 LDAPS 連接到伺服器
我在最新的 Debian 機器上執行 OpenLDAP。我正在嘗試執行一個簡單的命令:
ldapsearch -x -h <<IP>>:636 -D cn=<<BASE DN>> -d1
我得到這個輸出:
ldap_create ldap_url_parse_ext(ldap://<<IP>>:636) ldap_sasl_bind ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP <<IP>>:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: Trying <<IP>>:636 ldap_pvt_connect: fd: 3 tm: -1 async: 0 ldap_open_defconn: successful ldap_send_server_request ber_scanf fmt ({it) ber: ber_scanf fmt ({i) ber: ber_flush2: 35 bytes to sd 3 ldap_result ld 0x7f962cf14460 msgid 1 wait4msg ld 0x7f962cf14460 msgid 1 (infinite timeout) wait4msg continue ld 0x7f962cf14460 msgid 1 all 1 ** ld 0x7f962cf14460 Connections: * host: <<IP>> port: 636 (default) refcnt: 2 status: Connected last used: Wed Dec 17 13:48:09 2014 ** ld 0x7f962cf14460 Outstanding Requests: * msgid 1, origid 1, status InProgress outstanding referrals 0, parent count 0 ld 0x7f962cf14460 request count 1 (abandoned 0) ** ld 0x7f962cf14460 Response Queue: Empty ld 0x7f962cf14460 response count 0 ldap_chkResponseList ld 0x7f962cf14460 msgid 1 all 1 ldap_chkResponseList returns ld 0x7f962cf14460 NULL ldap_int_select read1msg: ld 0x7f962cf14460 msgid 1 all 1 ber_get_next ldap_err2string ldap_result: Can't contact LDAP server (-1) ldap_free_request (origid 1, msgid 1) ldap_free_connection 1 1 ldap_free_connection: actually freed
我不知道這實際上意味著什麼。看起來一切都很好,但是在嘗試檢索結果時它會破壞床。該輸出中是否有任何內容可以告訴我為什麼我的搜尋不起作用?
當我在不指定安全埠的情況下執行相同的查詢時,我的搜尋工作正常:
ldapsearch -x -h <<IP>> -D cn=<<BASE DN>>
不要在 IP 地址之後指定 SSL 埠,而是在 URI 中使用帶有 -H 開關的 LDAPS 協議:
ldapsearch -x -H ldaps://127.0.0.1 -D cn=[base DN] -d1
如果您使用自簽名證書連接到伺服器,您可能還需要修改
ldap.conf
以禁用證書驗證(不推薦):HOST 127.0.0.1 PORT 636 TLS_REQCERT ALLOW
或者將伺服器的公鑰複製到客戶端的證書列表中。
- 將本地(自行生成的)目標伺服器和本地網路 CA 權限複製到要使用 ldapsearch 的伺服器的 /usr/local/share/ca-certificates/ 文件夾。
- 執行命令
sudo update-ca-certificates
之後,ldapsearch 查詢將起作用。