负载平衡器后面的TLS的OpenLDAP镜像模式复制失败

我有两个运行TLS的OpenLDAP服务器。 他们是:

ldap1.mydomain.com ldap2.mydomain.com 

我也有一个负载均衡器集群,它有一个自己的DNS名称:

 ldap.mydomain.com 

SSL证书具有ldap.mydomain.com的CN,ldap1.mydomain.com和ldap2.mydomain.com的SAN。

一切正常…除镜像模式复制。

我的镜像模式复制是这样设置的:

的ldap.conf

 TLS_REQCERT allow 

CN = config.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 +" 

这是我在syslog中得到的错误:

 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)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指令中使用的编辑密码实际上是SSHA密码。 看起来这不是很酷。 我用明文密码replace了SSHA哈希值。

哦,我也清理了syncprov叠加层,所以每个实际的数据库中只有一个叠加层 – 不在config数据库中。

顺便说一句,我find了一个Howard Chu的post,他说在服务器的configuration中rid必须是唯一的,而不是跨越服务器的镜像configuration。 所以,在两台服务器上,像rid这样的声音都可能是001,但是无论如何,我都把它放在001和002上,而且不会伤害任何人。

如16.5.3所述。 镜像模式configuration ,

您还需要确保摆脱每个镜像节点对是不同的…

所以,在ldap2上将rid=001更改为rid=002