我遇到了smbpasswd,LDAP后端服务器和SSL / TLS证书的问题。 运行smbpasswd的客户端机器是Debian Etch机器,而Ldap服务器是在Solaris上运行的Sun DS。 以下全部发生在客户端上。
当禁用SSL时,通过在smb.conf中设置“ldap ssl = no”,smbpasswd程序可以正常工作。
当我设置“ldap ssl = start tls”时,以下消息由smbpasswd打印,并且在任何密码被请求之前有一个很长的超时时间
Failed to issue the StartTLS instruction: Connect error Connection to LDAP server failed for the 1 try! ..... long delay ..... New SMB password: Retype new SMB password: Failed to issue the StartTLS instruction: Connect error Connection to LDAP server failed for the 1 try! smbpasswd: /tmp/buildd/openldap2-2.1.30/libraries/liblber/io.c:702: ber_get_next: Assertion `0' failed. Aborted
我用“ldapsearch -ZZ”进行了一些testing。 它一开始并不工作,但在将TLS_CACERT行添加到/etc/ldap/ldap.conf,/etc/libnss-ldap.conf和/etc/pam_ldap.conf之后,它开始工作。 所有这些文件中相关的TLS部分是:
ssl start_tls tls_checkpeer no tls_cacertfile /path/to/ca-root.pem TLS_CACERT /path/to/ca-root.pem
但是smbpasswd程序继续给出错误。
我尝试使用以下内容创build/etc/smbldap-tools/smbldap.conf文件(在咨询smbldap-tools软件包的debian文档之后)但是,正如我所看到的,smbpasswd附带了samba-common软件包,不使用smbldap-tools的configuration公用事业。
verify="optional" cafile="/path/to/ca-root.pem"
我的问题是:如何设置smbpasswd程序使用哪个SSL CA证书?
您不指定SSL客户端应使用哪个CA证书; 相反,您只需将所有CA证书附加到相同的文件。 根据哪个CA签署了服务器证书,它会尝试在该根证书文件中find它。
你遇到了一个bug,你运行的是openldap 2.2; 升级到最新的:2.4.x ldap。 那你会好起来的。