尝试几种方法为 PostgreSQL 实现 LDAPS 时运气不佳。
pg_hba.conf
hostssl all +test_ldap 0.0.0.0/0 ldap ldapserver=dc2.ad.foobar.com ldapport=636 ldapscheme=ldaps ldaptls=0 ldapbinddn="CN=ldap,OU=Helpers,OU=Foobar,DC=ad,DC=foobar,DC=com" ldapbindpasswd=*** ldapsearchattribute=mail ldapbasedn="OU=Users,OU=Foobar,DC=ad,DC=foobar,DC=com"
经过研究,我发现以下参数要更改。
postgresql.conf
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
问题是我如何获得.crt
和.key
从.pem
我已经拥有的证书(由 LDAP 团队共享)。除了这些之外,还需要做些什么才能使其与 LDAPS (SSL/TLS) 一起工作。
我从来没有这样做过,但我的理解是证书需要配置到您的 LDAP 库配置中,而不是您的 PostgreSQL。所以这可能会在
/etc/ldap/ldap.conf
. 此外,不会有钥匙。您只是在验证证书,而不是签署新证书。在您评论中的链接中,第二个仅描述使用 TLS 进行客户端到数据库的连接,而不是数据库到 LDAP 服务器的连接。第一个链接描述了两者,但没有很清楚地解释哪个部分与哪个功能有关。LDAP 是他们所做的,
/etc/pki/ca-trust/source/anchors/ad-ca.cer
尽管具体细节因发行版而异。这听起来很奇怪,但是您不需要任何证书来使 LDAPS 工作。我花了无数个小时,但解决方案是 1 班轮。
步骤1:
将以下行添加到
/etc/openldap/ldap.conf
(可能因发行版而异)第2步:
确保您的
pg_hba.conf
.i) 如果
SSL
设置为off
或在 中注释postgresql.conf
。使用下面的条目ii) If
SSL
设置为on
或在 中注释postgresql.conf
。只需替换host
为hostssl
(请参阅上面的配置)。第 3 步:
进行更改后,以超级用户身份登录您的 psql 客户端并运行以下命令。或者,如果您负担得起数据库的停机时间,只需重新启动
postgresql.service
.您必须使用
ldaptls=1
来获得到 LDAP 服务器的加密连接