我遇到了 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”进行了一些测试。起初它不起作用,但在我将 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 程序继续给出错误。
我尝试使用以下内容创建 /etc/smbldap-tools/smbldap.conf 文件(在咨询 smbldap-tools 包的 debian 文档后)但正如我所见,smbpasswd 带有 samba-common 包并且不使用 smbldap-tools 的配置公用事业。
verify="optional"
cafile="/path/to/ca-root.pem"
我的问题是:如何设置 smbpasswd 程序使用哪个 SSL CA 证书?
您没有指定 SSL 客户端应该使用哪个 CA 证书;相反,您只需将所有 CA 证书附加到同一个文件。根据哪个 CA 签署了服务器证书,它会尝试在该根证书文件中找到它。
您遇到了一个错误,并且您正在运行 openldap 2.2;将其升级到最新版本:2.4.x ldap。那你就好了。