我有两个运行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 。