在Debian Lenny上打开StartTLS的OpenLDAP

我试图让Lenny上的OpenLDAP和StartTLS一起工作。 我有一个Fedora 13机器,我正在使用它作为客户端进行testing。 到目前为止,当我尝试使用ldapsearch进行连接时,Fedora客户端忽略了/etc/ldap.conf中的“host”指令。 即使我使用ldapsearch指定-H ldaps://server.name,客户端也想连接到127.0.0.1:389。 客户端机器上的/etc/ldap.conf处于模式444。

但即使当我尝试本地连接从SSH会话,我看到这样的错误: ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

有人打了我一个cluebat,plz。

更新:您必须使用〜/ .ldaprc来进行“主机”等设置。 另外,我刚刚使用nmap来对付ldap服务器,并显示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 async:0
 ldap_open_defconn:成功
 ldap_send_server_request
 ber_scanf fmt({it} ber:
 ber_dump:buf = 0x9bdbdb8 ptr = 0x9bdbdb8 end = 0x9bdbdd7 len = 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 end = 0x9bdbdd7 len = 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   
 msgstr 1“ldap_result ld 0x9bd3050”
 wait4msg ld 0x9bd3050 msgid 1(无限超时)
 msgstr 1 wait4msg continue ld 0x9bd3050 1全部1
 ** ld 0x9bd3050连接:
 *主机:192.168.10.41端口:636(默认)
   refcnt:2状态:连接
  上次使用时间:2010年6月12日12:54:05


 ** ld 0x9bd3050未完成的请求:
  * msgid 1,origid 1,状态InProgress
   优秀推荐0,父母计数0
   ld 0x9bd3050请求计数1(放弃0)
 ** ld 0x9bd3050响应队列:
   空
   ld 0x9bd3050响应计数0
 msgstr 1所有1
 ldap_chkResponseList返回ld 0x9bd3050 NULL
 ldap_int_select
只读1msg:ld 0x9bd3050 1
 ber_get_next
 ldap_read:想要= 8,得到= 0

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

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

我已经成功地让SSL在Lenny上与SLAPD合作。 虽然我不记得我做了什么,但我记得它与GNUTLS和OPENSSL之间的密码差异有关。 Lenny的SLAPD包是针对GNUTLS编译的。 可能与此有关 。

它看起来像不能读取密钥文件。 你应该有一个unpassworded密钥。 将openldap添加到ssl-cert组。 在密钥ssl-cert和权限440上build立组。openssl s_client命令可以用来debugging问题。

尝试在证书文件上做一个chown openldap:openldap。

如果您有一个由中间证书签名的SSL证书(这些日子并不罕见),您将在Lenny下的slapd中遇到TLS问题。 正如sybreon Lenny所提到的,与GNUTLS的链接不支持所有你需要的选项。

解决方法是使用slapd的Lenny backport。 但是我们发现2.4.17-2.1〜bpo50 + 1的backport是针对libdb4.6编译的,libdb4.6有一个bug,会影响我们运行大约一周的时间。

所以在这一点上,我不build议使用Lenny来运行slapd,如果你需要TLS的话。 升级挤压。