Ldap

無法通過 LDAPS 連接到伺服器

  • June 27, 2021

我在最新的 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

或者將伺服器的公鑰複製到客戶端的證書列表中。

  1. 將本地(自行生成的)目標伺服器和本地網路 CA 權限複製到要使用 ldapsearch 的伺服器的 /usr/local/share/ca-certificates/ 文件夾。
  2. 執行命令

sudo update-ca-certificates

之後,ldapsearch 查詢將起作用。

引用自:https://serverfault.com/questions/653321