Debian Lenny 上的 OpenLDAP 与 StartTLS 损坏

Debian Lenny 上的 OpenLDAP 与 StartTLS 损坏

我正在尝试让 Lenny 上的 OpenLDAP 与 StartTLS 配合使用。我有一台 Fedora 13 机器,我将其用作测试客户端。到目前为止,当我尝试使用 ldapsearch 进行连接时,Fedora 客户端会忽略 /etc/ldap.conf 中的“host”指令。即使我在使用 ldapsearch 时指定了 -H ldaps://server.name on,客户端也希望连接到 127.0.0.1:389。客户端机器上的 /etc/ldap.conf 处于模式 444。

但即使我尝试从 ssh 会话本地连接,我也会看到如下错误: ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

请有人用线索棒打我一下。

更新:您必须使用 ~/.ldaprc 进行“主机”等设置。另外,我刚刚对 ldap 服务器使用了 nmap,结果显示 636 和 389 处于打开状态。

这是我尝试连接时屏幕上显示的内容,ldapsearch -ZZ –x '(objectclass=*)'+ -d -1

ldap_create
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 192.168.10.41:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host:尝试 192.168.10.41:636
ldap_pvt_connect:fd:3 tm:-1 异步:0
ldap_open_defconn:成功
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_dump:buf=0x9bdbdb8 ptr=0x9bdbdb8 结束=0x9bdbdd7 长度=31
  0000:30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1  
  0010:2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037   
ber_scanf fmt({)ber:
ber_dump:buf=0x9bdbdb8 ptr=0x9bdbdbd 结束=0x9bdbdd7 长度=26
  0000:77 18 80 16 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e w...1.3.6.1.4.1。  
  0010:31 34 36 36 2e 32 30 30 33 37 1466.20037        
ber_flush2:31 字节到 sd 3
  0000:30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1  
  0010:2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037   
ldap_write:想要=31,写入=31
  0000:30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1  
  0010:2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037   
ldap_result ld 0x9bd3050 msgid 1
wait4msg ld 0x9bd3050 msgid 1(无限超时)
wait4msg 继续 ld 0x9bd3050 msgid 1 全部 1
** ld 0x9bd3050 连接:
* 主机:192.168.10.41 端口:636(默认)
  refcnt:2 状态:已连接
  最后使用时间:2010 年 6 月 6 日(星期日)12:54:05


** ld 0x9bd3050 未完成的请求:
 * msgid 1, origid 1, 状态为 InProgress
   未完成推荐 0,父级数 0
  ld 0x9bd3050 请求数1(放弃0)
** ld 0x9bd3050 响应队列:
   空的
  ld 0x9bd3050 响应计数0
ldap_chkResponseList ld 0x9bd3050 msgid 1 全部 1
ldap_chkResponseList 返回 ld 0x9bd3050 NULL
ldap_int_select
read1msg: ld 0x9bd3050 msgid 1 全部 1
ber_get_next
ldap_read:想要=8,得到=0

ber_get_next 失败。
ldap_err2string
ldap_start_tls:无法联系 LDAP 服务器(-1)

答案1

默认情况下,客户端会检查服务器的证书。只需将“TLS_REQCERT never”添加到 /etc/openldap/ldap.conf 即可

答案2

我最近设法让 SSL 与 Lenny 上的 SLAPD 一起工作。虽然我不记得我具体做了什么,但我记得这与 GNUTLS 和 OPENSSL 之间的密码差异有关。Lenny 的 SLAPD 包是针对 GNUTLS 编译的。可能与

答案3

看起来它无法读取密钥文件。您应该有一个未设置密码的密钥。将 openldap 添加到 ssl-cert 组。在密钥 ssl-cert 上创建组,权限为 440。openssl s_client 命令可用于调试 tls 问题。

答案4

如果您拥有由中间证书签名的 SSL 证书(这在当今并不罕见),那么您在 Lenny 下的 slapd 中会遇到 TLS 问题。正如 sybreon 所提到的,Lenny slapd 与 GNUTLS 链接,它不支持您需要的所有选项。

解决方案是使用 slapd 的 Lenny 反向移植版。但是我们发现 2.4.17-2.1~bpo50+1 反向移植版针对 libdb4.6 进行编译,其中有一个错误,运行大约一周后就会对我们产生影响。

因此,如果您需要 TLS,我不建议您使用 Lenny 来运行 slapd。请升级到 squeeze。

相关内容