我尝试通过 StartTLS 连接 LDAP,但遇到了问题。我已按照本指南一步步操作https://help.ubuntu.com/12.04/serverguide/openldap-server.html#openldap-tls并且 LDAP 运行正常,在我的 Ubuntu Sever 12.04 上执行“ldapsearch -xZZ -h 172.25.80.144”
但是,在我的 Ubuntu Desktop 11.04 客户端中出现此错误:
ldapsearch -x -H 172.25.80.144 -ZZ
ldap_start_tls: Connect error (-11)
additional info: **TLS: hostname does not match CN in peer certificate**
服务器 /etc/ldap/ldap.conf
BASE dc=prueba,dc=borja
URI ldap://prueba.borja
SIZELIMIT 12
TIMELIMIT 15
DEREF never
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
客户端 /etc/ldap.conf
ssl start_tls
tls_checkpeer no
/etc/ldap/ldap.conf
BASE dc=prueba,dc=borja
URI ldap://prueba.borja
SIZELIMIT 12
TIMELIMIT 15
DEREF never
TLS_REQCERT allow
有人能告诉我如何修复这个问题吗?我认为主机名没问题。
谢谢!
答案1
尝试
TLS_REQCERT never
在 /etc/ldap/ldap.conf 中。这将阻止检查证书。请注意,这会使连接更加不安全。
/etc/ldap.conf 不应影响 ldapsearch(1)
还可以尝试删除命令行上的第二个 -Z。这可能是导致失败的原因,即使您允许 TLS_REQCERT。
答案2
看这篇文章时我注意到了几件事。
首先,您正在通过标准 LDAP 而不是 LDAPS 运行 LDAP 服务器。即 ldaps://prueba.borja
其次,根据您的配置,似乎没有为 LDAP 服务器配置证书。所有被识别的都是 CA,当服务器作为客户端解析 CA 链和/或在客户端请求时发送链时,该 CA 用于信任。
最后,错误来自客户端,表明正在提供的 TLS 证书具有客户端未请求的通用名称 (CN) 和/或主题备用名称 (SAN)。这要求连接到 LDAP 服务器的客户端执行如下操作
ldapsearch -x -H prueba.borja -ZZ
这要求证书具有 prueba.borja 的通用名称 (CN) 或 prueba.borja 的主题备用名称 (SAN)
另外,需要提醒的是,LDAP 服务器提供的证书必须由您的证书颁发机构 (CA) 根证书和您可能拥有的中间证书签名。如果没有,您将收到其他错误。如果您使用的是公司生成的证书颁发机构,您的管理员应该能够生成一个。如果您使用的是公共域证书颁发机构,请联系您的供应商以生成证书。无论哪种情况,请务必告诉他们对通用名称和/或主题备用名称进行调整以使其与您标识的名称一致。
一旦正确设置了所有内容,就可以成功进行正确的 TLS 握手