我有两个 OpenLDAP 服务器,它们都运行 TLS。它们是:
ldap1.mydomain.com
ldap2.mydomain.com
我还有一个具有自己的 DNS 名称的负载均衡器集群:
ldap.mydomain.com
SSL 证书的 CN 为 ldap.mydomain.com,SAN 为 ldap1.mydomain.com 和 ldap2.mydomain.com。
一切正常......除了镜像模式复制。
我的镜像模式复制设置如下:
ldap配置文件
TLS_REQCERT allow
cn=配置.ldif
olcServerID: 1 ldap://ldap1.mydomain.com
olcServerID: 2 ldap://ldap2.mydomain.com
在 ldap1 上,olcDatabase{1}hdb.ldif
olcMirrorMode: TRUE
olcSyncrepl: {0}rid=001 provider=ldap://ldap2.mydomain.com bindmethod=simple bindmethod=simple binddn="cn=me,dc=mydomain,dc=com" credentials="REDACTED" starttls=yes searchbase="dc=mydomain,dc=com" schemachecking=on type=refreshAndPersist retry="60 +"
在 ldap2 上,olcDatabase{1}hdb.ldif
olcMirrorMode: TRUE
olcSyncrepl: {0}rid=001 provider=ldap://ldap1.mydomain.com bindmethod=simple bindmethod=simple binddn="cn=me,dc=mydomain,dc=com" credentials="REDACTED" starttls=yes searchbase="dc=mydomain,dc=com" schemachecking=on type=refreshAndPersist retry="60 +"
以下是我在系统日志中遇到的错误:
Dec 1 21:05:01 ldap1 slapd[6800]: slap_client_connect: URI=ldap://ldap2.mydomain.com DN="cn=me,dc=mydomain,dc=com" ldap_sasl_bind_s failed (-1)
Dec 1 21:05:01 ldap1 slapd[6800]: do_syncrepl: rid=001 rc -1 retrying
Dec 1 21:05:08 ldap1 slapd[6800]: conn=1111 fd=20 ACCEPT from IP=ldap.mydomain.com:2295 (IP=ldap1.mydomain.com:636)
Dec 1 21:05:08 ldap1 slapd[6800]: conn=1111 fd=20 closed (TLS negotiation failure)
有什么想法吗?我已经在 OpenLdap 上工作太久了。
答案1
已修复。有两个问题。
1) 证书 CSR 清楚地显示了两个单独的 LDAP 服务器的主题备用名称。我使用通常用于签名的 openssl 命令对其进行了签名,但从未检查过证书本身。结果发现证书上没有主题备用名称,因为这些名称需要特殊的 v3 扩展。这是我使用的命令。
openssl x509 -req -days 3650 -in ldap.csr -signkey ldapskey.pem -out cert.pem -extensions v3_req -extfile /etc/ssl/openssl.cnf
2) 我在 olcSyncrepl 指令中设置的 REDACTED 密码实际上是 SSHA 哈希。看起来这不太好。我用明文密码替换了 SSHA 哈希。
哦,我还清理了 syncprov 覆盖,这样每个实际数据库中只存在一个覆盖 - 而不是在配置数据库中。
顺便说一句,我发现了一篇 Howard Chu 的帖子,他说 rid 必须在服务器配置中是唯一的,而不是在跨服务器的镜像配置中。因此,听起来 rid 在两个服务器上都可以是 001,但无论如何,我将其保留为 001 和 002,这不会对任何人造成伤害。