1

Я пытаюсь настроить аутентификацию LDAP с помощью STARTTLS (я читал, что TLS/ldaps устарела). Кстати, незашифрованная аутентификация LDAP работает, но это не то, что я хочу.

Мне удалось настроить сервер каталогов LDAP, используя это руководство, начиная со свежей установки Ubuntu Server 16.10 (2 машины VirtualBox, одна для сервера, одна для клиента), и выполнил каждый шаг, включая необязательный последний шаг, чтобы разрешить только соединения TLS.

Теперь я могу запускать команды ldapwhoami и ldapsearch с аргументом -Z как на сервере, так и на клиенте. Так что, похоже, LDAP-соединения с сервером через STARTTLS работают. Когда я пытаюсь подключиться без -Z я получаю следующую (ожидаемую) ошибку:

Confidentiality required (13)
Additional information: TLS confidentiality required

Теперь я хочу использовать сервер для аутентификации пользователей LDAP на клиенте. Для этого я выполнил следующие команды на клиенте:

sudo apt-get install ldap-auth-client
# LDAP Server: ldap://ldap.example.com
# Base DN:     dc=example,dc=com
# Bind DN:     cn=admin,dc=example,dc=com

sudo auth-client-config -t nss -p lac_ldap

sudo vi /usr/share/pam-configs/mkhomedir
# changed "Default: no" to "Default: yes"
# changed "optional" to "required"

sudo pam-auth-update
# enabled "Create home directory on login"

Теперь, когда я хочу изменить пользователя на клиенте с помощью su - otheruser следующее сообщение об ошибке добавляется в /var/log/auth.log на клиенте:

nss_ldap: failed to bind to LDAP server ldap://ldap.example.com: Confidentiality required

Это то же сообщение об ошибке, что и при попытке запустить команды LDAP без STARTTLS (см. Выше), поэтому проблема заключается в том, что nss_ldap неправильно настроен для использования STARTTLS.

Я попытался (безуспешно) добавить записи в /etc/ldap/ldap.conf . Теперь это выглядит так:

BASE         dc=example,dc=com
URI          ldap://ldap.example.com
TLS_CACERT   /etc/ldap/ca_certs.pem
LDAP_VERSION 3
SSL          start_tls
TLS_REQCERT  allow

1 ответ1

1

Обыскивая конфигурацию клиента, я случайно открыл /etc/ldap.conf вместо /etc/ldap/ldap.conf и был удивлен, что оба существуют!

Файл /etc/ldap.conf генерируется debconf, т. Е. При вызове sudo apt-get install ldap-auth-client или sudo dpkg-reconfigure ldap-auth-config , и кажется, что он используется nss_ldap. Он содержит много комментариев.

Поскольку STARTTLS, похоже, не поддерживается мастером debconf, я изменил следующее в /etc/ldap.conf:

  • убрал первую строку ###DEBCONF###
  • раскомментировал строку ssl start_tls

Теперь аутентификация на клиенте наконец работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .