Я пытаюсь реализовать 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)
Что я делаю не так?
РЕДАКТИРОВАТЬ: Когда я пытаюсь использовать простую аутентификацию, я получаю следующую ошибку:
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
Я следовал тому же руководству, и у меня была такая же проблема. Это сработает, если вы сначала выполните шаги для «Усиления прав собственности и разрешений», указанные после вызывающей ошибку команды 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
Ну, я не знаю, является ли это решением или просто обходным путем, но мне удалось заставить его работать.
Сначала я остановил slapd с помощью:
service slapd stop
Затем я запустил его в режиме отладки:
slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65
Важно запускать его ТОЛЬКО с ldapi: /// URL. После запуска я выполнил команду ldapmodify, и атрибуты были импортированы.
В конце я остановил режим отладки и нормально запустил slapd.
В продолжение Ответ А. Гутьерреса, лучший способ проверить доступ к каждому файлу - запустить sudo -u openldap cat <filename>
. Я просмотрел все файлы несколько раз, и мне показалось, что права доступа установлены правильно. Оказалось групповой проблемой для openldap. Как только я наконец понял это, простой sudo usermod -a -G ssl-cert openldap
решил это за меня.
Иногда проблема заключается в профиле apparmor для службы slapd. Убедитесь, что в профиле apparmor разрешены пути сертификатов для демона.
Это вполне наглядно в /etc/apparmor.d/usr.sbin.slapd
. По умолчанию этот профиль позволяет читать сертификаты в местах по умолчанию.
Apparmor должен предотвращать неуказанные действия для исполняемого файла демона, несмотря на соответствующие разрешения unix.
Как я сообщил в эта ошибка на панели запуска Ubuntu, эта проблема также может быть вызвана apparmor. Обычно это отображается в системном журнале как отказ в доступе.
Исправление заключается в вставке следующей строки в /etc/apparmor.d/usr.sbin.slapd:
/etc/letsencrypt/** r,
а затем обновите профиль:
# apparmor_parser -vr usr.sbin.slapd
# service apparmor restart
У меня тоже есть эта проблема. Проблема в том, что у пользователя, запустившего slapd, не было доступа к файлам сертификатов. Убедитесь, что владельцем этих файлов является пользователь openldap.
Для меня проблема заключалась в неправильном порядке записей - вот та, которая сработала:
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
К сожалению, это ошибка "по умолчанию", которую вы получаете практически в любом случае. Ответ @wulfsdad обычно исправляет это.
Еще одна вещь, о которой я всегда забываю, - это то, что по умолчанию в ubuntu slapd хочет ключ в формате openssl. Я регулярно, но использую PCKS # 8, и ожидаю, что он просто сработает (что, честно говоря, должно). Если вы попробовали все перечисленные выше приложения, убедитесь, что ключ имеет правильный формат. Когда вы гуглите об ошибке, вы обычно читаете о неправильных разрешениях и терзаете голову, почему apache работает с тем самым ключом, который не нравится slapd.