38

我正在尝试通过 SSL/TLS 连接使用 ldapsearch,但它不起作用:

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 端口上运行良好,没有任何问题。

有什么提示吗?

PS这是我的ldap.conf:

TLS_REQCERT demand
TLS_CACERT ./cacert.pem

我什至尝试更改TLS_REQCERTnever,但它仍然不起作用。:-(

4

1 回答 1

70

首先,按照@dearlbry 的建议替换为-h my.server.com -p 3269-H ldaps://my.server.com:3269

然后,在/etc/openldap/ldap.conf(或/etc/ldap/ldap.conf我的 Ubuntu 13.04)中,通过添加以下内容禁用证书验证:

HOST my.server.com
PORT 3269
TLS_REQCERT ALLOW

ldaprc如果您不想影响整个系统,您也可以在当前目录中创建一个内容相同的文件。

这将通过 SSL 启用 ldapsearch,但无需验证。按照以下步骤将证书验证添加到组合中。

于 2012-11-27T21:50:00.553 回答