Аутентифікація OpenLDAP TLS


10

Я намагаюся реалізувати TLS відповідно до https://help.ubuntu.com/lts/serverguide/openldap-server.html Коли я намагаюся змінити базу даних cn = config з цим файлом ldif:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/test-ldap-server_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/test-ldap-server_key.pem

Я отримую таку помилку:

ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)

Що я роблю неправильно?

EDIT: Коли я намагаюся використовувати простий auth, я отримав таку помилку:

ldapmodify -x -D cn=admin,dc=example,dc=com -W -f certinfo.ldif
Enter LDAP Password:
ldap_bind: Invalid DN syntax (34)
        additional info: invalid DN

Перевірте дозволи на файли сертифікатів. А також видаліть пароль, якщо такий встановлено.
zeridon

Дякую за швидку відповідь. Для дозволів встановлено 644, за винятком файлу .key, який знаходиться на 600. Як перевірити / видалити пароль? Я не пам’ятаю, щоб встановити пароль для cn = config ..
Амар Прасович

2
Я маю на увазі пароль у самому сертифікаті (не на cn = config). Перевірте: mnx.io/blog/removing-a-passphrase-from-an-ssl-key
zeridon

Ні, це було не так. Файл ключів створено без пароля.
Амар Прасович

чи можете ви спробувати завантажити ldiff простим auth (не -Y EXTERNAL)
zeridon

Відповіді:


17

Я слідкував за тим самим керівництвом і мав той самий випуск. Він буде спрацьовувати, якщо ви зробите кроки з "Поглиблення права власності та дозволів", перелічені після першої порушної команди ldapmodify, а саме:

sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private
sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
sudo chmod g+X /etc/ssl/private
sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem

і

sudo systemctl restart slapd.service

1
Це працювало і для мене!
sonicwave

2
У моєму випадку мені довелося користуватися chgrp openldap. У всякому разі, це питання дозволу. +1
xonya

також приватний каталог також повинен бути виконаним, щоб перейти. sudo chgrp ssl-cert /etc/ssl/private && sudo chmod g+X /etc/ssl/private
Джефф Пукетт

3

Ну, я не знаю, чи це рішення чи просто вирішення, але мені вдалося змусити його працювати.

Я вперше зупинив ляпас із:

service slapd stop

Потім я запустив його в режимі налагодження:

slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65

Важливо - запустити його ТІЛЬКИ з URL-адресою ldapi: ///. Після його запуску я виконав команду ldapmodify і атрибути були імпортовані.

Наприкінці я припинив режим налагодження і запустив ляпаси нормально.


2

Як відповідь на відповідь А. Гутьєрреса , найкращий спосіб перевірити доступ до кожного файлу - це запустити sudo -u openldap cat <filename>. Я переглянув усі файли кілька разів, і вони видали, що дозволи правильно встановлені. Групова проблема виявилася для openldap. Одного разу я нарешті зрозумів це, простий sudo usermod -a -G ssl-cert openldapдля мене це вирішив.


2

Іноді проблема полягає в профілі apparmor для служби slapd. Будьте впевнені, що профіль apparmor дозволив путівки сертифікатів для демон.

Це досить візуально в /etc/apparmor.d/usr.sbin.slapd. За замовчуванням цей профіль дозволяє читати сертифікати у типових місцях.

Apparmor повинен запобігати невизначеним діям для виконуваного демона, незважаючи на належні дозволи Unix.


Якщо ви використовуєте леценкрипт, це рішення. Додайте такі рядки до /etc/apparmor.d/usr.sbin.slapd: / etc / letsencrypt / r, / etc / letsencrypt / ** r та перезавантажте профілі apparmor.
Бернхард

1

Як я повідомляв у цій помилці на запуску Ubuntu Launchpad , ця проблема також може бути викликана apparmor. Зазвичай це відображатиметься в системі як заборона доступу.

Виправлення вставляє наступний рядок у /etc/apparmor.d/usr.sbin.slapd:

/etc/letsencrypt/** r,

а потім оновлення профілю:

# apparmor_parser -vr usr.sbin.slapd
# service apparmor restart

0

У мене є і ця проблема. Проблема полягає в тому, що користувач, який працює з slapd, не має доступу до файлів certs. Перевірте, що власником цих файлів є користувач openldap.


0

Для мене проблема полягала в неправильному порядку записів - ось такий, який працював:

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cm_ca_cert.pem
-
# This never worked for me, no idea why
#add: olcTLSCipherSuite
#olcTLSCipherSuite: TLSv1+RSA:!NULL
#-
replace: olcTLSVerifyClient
olcTLSVerifyClient: never
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/cm_server.pem
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/cm_server.key

0

На жаль, це здається помилкою "за замовчуванням", яку ви отримуєте практично за будь-що. @ wulfsdad's anwser зазвичай це виправляє.

Ще одна річ, яку я завжди забуваю, це те, що за замовчуванням на ubuntu slapd потрібен ключ у форматі openssl. Я регулярно, але клавіші PCKS №8 в ньому і очікую, що він просто запрацює (що справедливо, як слід). Якщо ви спробували всі відповідники вище, переконайтесь, що ключ має правильний формат. Коли ви гуглите про помилку, ви зазвичай читаєте про неправильні дозволи та натираєте голову, чому апаш працює з самим ключем slapd.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.