ldapsearch через ssl / tls не работает

Я пытаюсь использовать ldapsearch через соединение ssl / tls, но это не работает:

ldapsearch -ZZ -d 5 -b "cn=Users,dc=my,dc=server,dc=com" -s sub -D
"cn=mydevice,cn=Users,dc=my,dc=server,dc=com" -h my.server.com -p 3269
-w "mypass" -x "(cn=test)"

ldap_create
ldap_url_parse_ext(ldap://my.server.com:3269)
ldap_extended_operation_s
ldap_extended_operation
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP my.server.com:3269
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.199.46.70:3269
ldap_connect_timeout: fd: 3 tm: -1 async: 0
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({) ber:
ber_flush: 31 bytes to sd 3
ldap_result ld 0x95ff590 msgid 1
wait4msg ld 0x95ff590 msgid 1 (infinite timeout)
wait4msg continue ld 0x95ff590 msgid 1 all 1
** ld 0x95ff590 Connections:
* host: my.server.com  port: 3269  (default)
refcnt: 2  status: Connected
last used: Mon Feb 27 10:59:43 2012

** ld 0x95ff590 Outstanding Requests:
* msgid 1,  origid 1, status InProgress
outstanding referrals 0, parent count 0
** ld 0x95ff590 Response Queue:
Empty
ldap_chkResponseList ld 0x95ff590 msgid 1 all 1
ldap_chkResponseList returns ld 0x95ff590 NULL
ldap_int_select
read1msg: ld 0x95ff590 msgid 1 all 1
ber_get_next
ldap_perror
ldap_start_tls: Can't contact LDAP server (-1)

Сообщение об ошибке не дает достаточного намека на то, что не так. Напротив, простая привязка и поиск проходят без проблем на порту 389.

Намек?

P.S. Вот мой ldap.conf:

TLS_REQCERT demand
TLS_CACERT ./cacert.pem

Я даже пытался изменить TLS_REQCERT на never, но это все равно не работает. :-(


person Qiang Xu    schedule 27.02.2012    source источник
comment
Не похоже, что он пытается использовать TLS. Вместо этого вы можете использовать переключатель -H с URL-адресом LDAP: ldapsearch -ZZ -d 5 -b cn = Users, dc = my, dc = server, dc = com -s sub -D cn = mydevice, cn = Users, dc = my, dc = server, dc = com -H ldaps: //my.server.com: 3269 -w mypass -x (cn = test)   -  person dearlbry    schedule 07.03.2012
comment
Вы можете добавить файл .ldaprc для каждого пользователя с указанным выше и использовать полный путь для TLS_CACERT. Также см. TLS_CACERTDIR и справочную страницу ldap.conf.   -  person Lester Cheung    schedule 20.07.2020


Ответы (1)


Сначала замените -h my.server.com -p 3269 на -H ldaps://my.server.com:3269, как предлагает @dearlbry.

Затем в /etc/openldap/ldap.conf (или /etc/ldap/ldap.conf в моем Ubuntu 13.04) отключите проверку сертификата, добавив следующее:

HOST my.server.com
PORT 3269
TLS_REQCERT ALLOW

Вы также можете создать ldaprc файл в текущем каталоге с тем же содержимым, если не хотите влиять на всю систему.

Это позволит ldapsearch через SSL, но без проверки. Следуйте этим шаги по добавлению проверки сертификата.

person ixe013    schedule 27.11.2012
comment
Обратите внимание, что вы можете сделать это временно с помощью переменной окружения LDAPTLS_REQCERT=ALLOW (также LDAPTLD_CERT=/path/to/cert и так далее, но я не мог заставить это работать, потому что он запрашивает ключевой файл, которого у меня нет). - person Timmmm; 09.07.2019
comment
OP hss TLS_CACERT set - это все, что ему нужно, хотя он, вероятно, должен использовать пользовательскую конфигурацию ($ HOME / .ldaprc) и полный путь для TLS_CACERT. - person Lester Cheung; 20.07.2020