Я пытаюсь настроить безопасное соединение между exim
и slapd
используя самоподписанный сертификат. В ldap_require_cert = hard
требуется для проверки сертификата TLS, представленного сервером LDAP, но проверка не выполняется при аутентификации клиента:
2017-07-20 15:51:26 login authenticator failed for (client) [10.0.5.2]: 435 Unable to authenticate at present (set_id=user1): lookup of "user=uid=user1,ou=accounts,dc=domain,dc=local pass=123 ldap:///uid=user1,ou=accounts,dc=domain,dc=local?uid?sub?(&(uid=user1)(objectClass=VirtualMailAccount)(accountActive=TRUE))" gave DEFER: failed to initiate TLS processing on an LDAP session to server mail.domain.local:389 - ldap_start_tls_s() returned -1: Can't contact LDAP server
Все работает хорошо с участием ldap_require_cert = never
, но мне нужно проверить сертификат сервера.
Вот фрагмент файла конфигурации exim:
...
ldap_default_servers = mail.domain.local
ldap_start_tls = true
ldap_require_cert = hard
ldap_version = 3
ldap_ca_cert_file = /etc/exim4/ssl/ldap_ca.cert
...
Я почти уверен, что это не проблема с разрешением (я установил 777
режим во время расследования).
Также у меня получилось с такой же конфигурацией для голубятни, все отлично работает. Вот кусок dovecot-ldap.conf
:
...
tls = yes
tls_ca_cert_file = /etc/dovecot/ssl/ldap_ca.cert
tls_require_cert = hard
Так что я делаю не так?
Изменение hard
к demand
решает проблему. Из man ldap.conf
: demand | hard These keywords are equivalent.