Я борюсь с настройкой TLS для нового сервера OpenLDAP. Система - Debian Jessie (обновлена до последней стабильной версии 8.7), и я настроил сервер, установив slapd
пакет, практически без модификаций.
Одна из вещей, которые я пытаюсь настроить, - это TLS Cipher Suite. Вот LDIF:
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: HIGH
Когда я пытаюсь отправить это изменение с помощью следующей команды:
ldapmodify -Y EXTERNAL -H ldapi:/// -f set-cipher-suite.ldif
Я получаю такую ошибку:
ldap_modify: Server is unwilling to perform (53)
Я также попытался установить файл сертификата со следующим LDIF:
dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/foo.crt
Здесь я получаю ошибку 80 вместо ошибки 53.
ldap_modify: Other (e.g., implementation specific) error (80)
Я дважды проверил, существует ли файл и что slapd
имеет доступ к файлу.
Я изменился olcLogLevel
к any
(тем самым доказав, что я могу изменять конфигурацию) и проверил вывод отладки, но то, что я вижу там, не имеет никакой информационной ценности для моего неподготовленного глаза. Вот фрагмент, в котором возникает ошибка 53:
[...] Jun 8 16:46:21 pelargir slapd[36937]: slap_queue_csn: queueing 0x7f3648f4a430 20160608144621.742848Z#000000#000#000000 Jun 8 16:46:21 pelargir slapd[36937]: oc_check_required entry (cn=config), objectClass "olcGlobal" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "objectClass" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "cn" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcArgsFile" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcLogLevel" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcPasswordHash" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcPidFile" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcToolThreads" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "structuralObjectClass" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "entryUUID" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "creatorsName" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "createTimestamp" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "olcTLSCipherSuite" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "entryCSN" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "modifiersName" Jun 8 16:46:21 pelargir slapd[36937]: oc_check_allowed type "modifyTimestamp" Jun 8 16:46:21 pelargir slapd[36937]: send_ldap_result: conn=1002 op=1 p=3 Jun 8 16:46:21 pelargir slapd[36937]: send_ldap_result: err=53 matched="" text="" Jun 8 16:46:21 pelargir slapd[36937]: send_ldap_response: msgid=2 tag=103 err=53 Jun 8 16:46:21 pelargir slapd[36937]: conn=1002 op=1 RESULT tag=103 err=53 text= [...]
Может ли кто-нибудь намекнуть, что я здесь делаю не так? Что меня совершенно сбивает с толку, так это то, что я могу успешно изменять простые параметры, такие как olcLogLevel
или olcPasswordHash
, но я терплю неудачу, когда пытаюсь сделать то же самое для таких же простых параметров TLS, таких как olcTLSCipherSuite
.
Я столкнулся с той же проблемой, openldap в debian скомпилирован с пакетом gnu-tls и по умолчанию не установлен.
Это может помочь:
apt install gnutls-bin
Также убедитесь, что у пользователя openldap достаточно прав для чтения сертификатов. Например:
useradd letsencrypt
chown openldap:letsencrypt /etc/letsencrypt/ -R
usermod -a -G letsencrypt openldap
Проблема с
olcTLSCipherSuite: HIGH
заключается в том, что GnuTLS не знает набора шифров "HIGH", потому что это удобное имя поддерживается только OpenSSL. Если вы хотите увидеть доступные имена шифров, поддерживаемые GnuTLS, выполните команду gnutls-cli -l
. Установите gnutls-bin
Пакет Debian, чтобы получить доступ к gnutls-cli
утилита.
Проблема с
olcTLSCertificateFile: /etc/ssl/certs/foo.crt
Я не мог воспроизводить потомство более 3 лет. Как отметил в своем ответе Александр Кьялл, в конце концов, это могла быть проблема с разрешением.