首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ldap_result:无法联系LDAP服务器(-1)

ldap_result:无法联系LDAP服务器(-1)
EN

Server Fault用户
提问于 2016-11-29 15:09:04
回答 2查看 49.9K关注 0票数 6

G‘’day,我配置了openldap服务器机器,它运行在端口636上。我还可以从另一台openldap-客户端计算机上传送到这个端口。为了保护连接,我使用此链接在这里输入链接描述在服务器上创建了一个自签名证书,然后将证书文件复制到客户端。

我已经确保SELinux在两台机器上都是可解压缩的,而且client /etc/openldap/ldap.conf文件还有TLS_REQCERT允许的选项

客户端计算机的详细配置如下:

代码语言:javascript
复制
# cat ldap.conf
URI ldap://ad.dfsi.dev:636
BASE dc=dfsi,dc=dev
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT allow

和nslcd文件:

代码语言:javascript
复制
# cat /etc/nslcd.conf
tls_reqcert allow
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
tls_reqcert allow

如果我不使用SSL,那么ldap客户端可以访问所有ldap用户。但是,当我通过authconfig-tui将配置更改为使用TLS时,ldaps://ad.xx.dev:636,则失败。

日志显示客户端成功地连接到服务器,但随后服务器删除连接,如下所示:

代码语言:javascript
复制
ldapsearch -x -d 1
ldap_create
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ad.dfsi.dev:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying xx.xx.xx.xx:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect: 
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({i) ber:
ber_flush2: 14 bytes to sd 3
ldap_result ld 0x7f8f75e1d150 msgid 1
wait4msg ld 0x7f8f75e1d150 msgid 1 (infinite timeout)
wait4msg continue ld 0x7f8f75e1d150 msgid 1 all 1
** ld 0x7f8f75e1d150 Connections:
* host: ad.dfsi.dev  port: 636  (default)
  refcnt: 2  status: Connected
  last used: Tue Nov 29 15:01:28 2016


** ld 0x7f8f75e1d150 Outstanding Requests:
 * msgid 1,  origid 1, status InProgress
   outstanding referrals 0, parent count 0
  ld 0x7f8f75e1d150 request count 1 (abandoned 0)
** ld 0x7f8f75e1d150 Response Queue:
   Empty
  ld 0x7f8f75e1d150 response count 0
ldap_chkResponseList ld 0x7f8f75e1d150 msgid 1 all 1
ldap_chkResponseList returns ld 0x7f8f75e1d150 NULL
ldap_int_select
read1msg: ld 0x7f8f75e1d150 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

运行openssl显示,客户端无法在服务器上找到任何证书,这是不合理的,因为我在那里修复了所有的东西:

代码语言:javascript
复制
# openssl s_client -showcerts -connect ad.dfsi.dev:636 
CONNECTED(00000003)
140330386184096:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 247 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

nss-pam authconfg tui每次都生成其新的CACERTDIR,这将覆盖以前的配置。因此,我还将证书文件放在/etc/openldap/cacerts文件夹中。

我的客户端机器是CentOS7,服务器是Redhat ec2实例。

有人能给我一些提示来解决这个问题吗?

EN

回答 2

Server Fault用户

发布于 2016-12-05 06:29:29

STARTTLS的意思是“显式TLS”,其中连接是在常规端口上建立的,然后发送STARTTLS命令来启动SSL握手并切换到保护模式。

要连接,请尝试将-Z-ZZ开关添加到ldapsearch

代码语言:javascript
复制
ldapsearch -x -d 1 -ZZ

就是把客户端送到使用统计分析

恐怕OpenSSL现在不支持LDAP协议的starttls (参见手册页man s_client关于-starttls参数)。

票数 5
EN

Server Fault用户

发布于 2016-12-01 21:18:20

为了澄清这一点:您在OpenLDAP服务器中配置了TLS使用吗?

您仍然需要设置一些参数。供参考,请查看http://www.openldap.org/doc/admin24/tls.html#Server%20Configuration

据我所知,您的客户端连接到LDAP机器,但LDAP机器不知道要向客户端传递哪个证书。

你能不能证实或伪造我的猜测?

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/817688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档