Назад | Перейти на главную страницу

Конфигурация OpenLDAP TLS - невозможно установить TLS - недопустимые учетные данные

Привет, я искал в Google, почему моя попытка изменить конфигурацию open ldap для TLS не удалась при праве доступа:

root@labm:~/slapd# more /root/slapd/tls.ldif
dn: cn=config,dc=LDAPTEST,dc=NET
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/key.pem
-
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/cert.pem


ldapmodify -x -D "cn=admin,dc=LDAPTEST,dc=NET" -W -f /root/slapd/tls.ldif
Enter LDAP Password:
modifying entry "cn=config"
ldap_modify: Insufficient access (50)

Не удалось, потому что, очевидно, я использовал администратора для изменения записи конфигурации. Я нашел статью о той же проблеме, и решение заключалось в том, чтобы установить пароль root для базы данных конфигурации, а затем попытаться изменить его. Итак, я создал хэш для своего пароля и сохранил его в changepwd.ldif:

slappasswd -h {SSHA} -s <mypassword>

vi /root/slapd/changepwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}av9lfvBlCwBBETzHxxxxxxxxxxxxxxxx

Успешно изменен конфиг olcRootPW (и я проверил его в файлах /etc/ldap/slap.d/cn=config/)

ldapmodify -H ldapi:/// -Y EXTERNAL -D 'cn=config' -f /root/slapd/changepwd.ldif

Но снова, когда я пытаюсь изменить настройки TLS с помощью cn=config и новый mypassword, попытка не удалась из-за неверных учетных данных:

ldapmodify -x -D "cn=config,dc=LDAPTEST,dc=NET" -W -f /root/slapd/tls.ldif
Enter LDAP Password: <mypassword>
ldap_bind: Invalid credentials (49)

Содержимое файла конфигурации:

 cat /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 175b5eb1
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: a965b54a-7586-1036-95d8-ad7092a067bf
creatorsName: cn=config
createTimestamp: 20170123070944Z
olcRootPW:: e1NTSxxxxxxxxxxxxxxxxxxx
entryCSN: 20170124144811.769576Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170124144811Z

Есть идеи, что я делаю неправильно?

Тебе надо:

sudo ldapmodify -H ldapi:/// -Y EXTERNAL -f /root/slapd/tls.ldif

(Обратите внимание sudo).

Условие доступа в вашей config db:

olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break

означает, что доступ к config db разрешен пользователям, аутентифицируемым с помощью EXTERNAL если uidNumber и gidNumber равны нулю (то есть: это root).

EXTERNAL auth в этом случае означает, что вы получаете доступ к каталогу через канал в файловой системе (схема ldapi: ///), а операционная система выполняет аутентификацию / авторизацию на основе вашего пользователя.

Вот почему вам нужно быть root.

Также обратите внимание на dn файла tls.ldif необходимо изменить на:

dn: cn=config
changetype: modify
[...]
# same as before

В cn=config является корневым пространством имен, а не листовым пространством имен вашего пространства имен данных.