У меня есть два сервера 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.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 +"
Вот ошибки, которые я получаю в системном журнале:
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. Похоже, это не круто. Я заменил хэш SSHA паролем в виде открытого текста.
Да, и я также убрал наложения syncprov, так что только один оверлей существовал в каждой из фактических баз данных, а не в базах данных конфигурации.
Кстати, я нашел сообщение Говарда Чу, в котором он сказал, что избавление должно быть уникальным в конфигурации сервера, а не в вашей зеркальной конфигурации, охватывающей серверы. Итак, похоже, что rid может быть 001 на обоих серверах, но в любом случае я оставил его 001 и 002, и это никому не вредит.
Как указано в 16.5.3. Конфигурация MirrorMode,
Вам также необходимо убедиться, что избавляться каждой пары зеркальных узлов отличается ...
Итак, на ldap2 меняем rid=001
к rid=002
.