我正在尝试让 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。