在 ldap.conf 文件中启用了 ssl start_tls 选项后,Ubuntu ldap 身份验证无法在我的客户端上运行。当我注释掉 ssl start_tls 时,我可以进行身份验证。
我升级了 ldap 服务器证书,从那时起,如果启用了 ssl,用户就无法再在我的 ubuntu 10.04 客户端计算机上进行身份验证。发生的变化:
Cert upgraded from 1024 to 2048 bit
now is a wildcart cert and use it to be a self-signed cert
encryption algorithm is now shaw512 (use to be md5)
我的 auth.log 有一些错误:
nss-ldap:do_open:do_start_tls 失败:stat=-1
新的证书正在运行,因为我有一些其他客户端使用新的证书(旧的 centOS 机器)进行身份验证。
谁知道为什么我不能再在客户端上使用 ldap 和 ssl 了?
答案1
是否有签名层次结构(即非自签名)?“通配符”和“自签名”并不排斥。商业通配符证书将具有层次结构,即一个或多个中间 CA 和一个根 CA。
sha-512 或 md5 是哈希在证书签名中使用,它们不是加密算法。这些用于验证证书的完整性,用于连接的密码是独立于此协商的。
我认为最可能的原因是 Ubuntu 10 不支持 sha512(更准确地说是“sha512WithRSAEncryption”);或者机器缺少一个或多个 CA 证书(中间或根),因此无法完成完整链验证。
您可以通过运行以下命令(在 Ubuntu 10 机器上)查看 openssl 是否可以处理服务器的新证书:
openssl x509 -in newservercert.crt -noout -text
虽然这可能不是结论性的。以下这些可能也有帮助:
ldapsearch -x -Z -v -h your.ldap.server
(使用 GnuTLS 代替 OpenSSL 的可能性很小,对此我们无能为力,抱歉!)
您可以通过将其添加到 /etc/ldap/ldap.conf 文件来确认或否认链问题:
TLS_REQCERT never
如果有帮助的话,您应该获取链中缺失的部分,并将它们添加到您的本地存储中,如何实现取决于客户端配置,从检查 /etc/ldap/ldap.conf 指令中的“TLS_CACERT”和/或 TLS_CACERTDIR 开始。
不太可能的原因包括:
- 无法检查 CRL(检查 ldap.conf 是否已启用)
假设其他一切都没有改变,为了完整性,以下列出不可能的原因:
- 客户端不支持服务器协议版本或密码集
- 支持的 SASL 机制发生变化
答案2
不确定你是否解决了这个问题。我遇到了同样的情况。12.04 使用 tls 连接到 ldap 服务器,但 10.04 没有。我的解决方案是添加一行/etc/ldap/ldap.conf
:
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
10.04 客户端可以使用 tls 连接到 ldap 服务器。