PostgreSQL通过OpenLDAP认证失败:ldapsearch命令差异排查
Debian Bullseye下PostgreSQL通过OpenLDAP认证失败排查
基础环境与配置
- 系统版本:Debian Bullseye
- OpenLDAP版本:slapd=2.4.57*
- PostgreSQL
pg_hba.conf相关配置:
hostssl all all all ldap ldapserver=ldap ldapport=389 ldapbasedn="dc=discover,dc=d-fine,dc=com" ldapbinddn="uid=database,ou=users,dc=discover,dc=d-fine,dc=com" ldapbindpasswd=secret ldapsearchattribute=uid ldaptls=1
核心问题现象
在数据库容器中执行以下连接命令:
psql "sslmode=require dbname=postgres host=database user=discover-bot"
返回认证失败错误:
psql: error: connection to server at "database" (172.18.0.4), port 5432 failed: FATAL: LDAP authentication failed for user "discover-bot"
LDAP容器内测试对比
- 设置环境变量后测试成功
先执行:
export LDAPTLS_CACERT=/etc/ldap/certs/ca-certs.pem
再执行LDAP查询命令,可正常获取结果:
ldapsearch -h ldap -p 389 -ZZ -D "uid=database,ou=users,dc=discover,dc=d-fine,dc=com" -w secret -b "dc=discover,dc=d-fine,dc=com" "(uid=discover-bot)"
- 未指定CA证书路径时测试失败
直接执行以下命令,连接报错:
ldapsearch -x -v -ZZ ldap://ldap:389 -D "uid=database,ou=users,dc=discover,dc=d-fine,dc=com" -w secret -b "dc=discover,dc=d-fine,dc=com" "(uid=discover-bot)"
错误信息:
ldap_initialize( <DEFAULT> ) ldap_start_tls: Connect error (-11) additional info: (unknown error code)
待确认与排查方向
- 两个
ldapsearch命令执行结果差异的具体原因 - 是否需要在PostgreSQL容器或LDAP容器中默认配置
LDAPTLS_CACERT环境变量 - 该认证配置在Debian Buster下可正常运行,升级到Bullseye后失效的根因
- 如何开启并获取LDAP详细日志以定位问题
内容的提问来源于stack exchange,提问作者Fedor Petrov
相关产品推荐
相关产品推荐

