Я пытаюсь реализовать 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
Ну, я не знаю, это решение или просто обходной путь, но мне удалось заставить его работать.
Сначала я остановил slapd с помощью:
service slapd stop
Затем я начал в режиме отладки:
slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65
Важно запускать ТОЛЬКО с ldapi: /// URL. После запуска я выполнил команду ldapmodify, и атрибуты были импортированы.
В конце я остановил режим отладки и запустил slapd в обычном режиме.
У меня тоже есть эта проблема. Проблема в том, что у пользователя, запустившего slapd, не было доступа к файлам сертификатов. Убедитесь, что владельцем этих файлов является пользователь openldap.
Я следовал тому же руководству, и у меня была такая же проблема. Это сработает, если вы выполните действия по «Укреплению прав собственности и разрешений», перечисленные вначале после вызывающей ошибку команды 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
В продолжение A. Ответ Гутьерреса, лучший способ проверить доступ для каждого файла - запустить sudo -u openldap cat
. Я просмотрел все файлы несколько раз, и они выглядели так, чтобы права были установлены правильно. Оказалось, что это групповая проблема для openldap. Как только я, наконец, понял это, простой sudo usermod -a -G ssl-cert 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's anwser адатта аны оңдойт.
Дагы бир нерсени унутам: ubuntu slapdде ачкычты opensl форматында каалаганым. Мен аны үзгүлтүксүз, бирок PCKS # 8 баскычын ачып, анын жөн гана иштешин күтөм (бул туура болуш керек). Эгерде сиз жогоруда келтирилген анверлердин бардыгын сынап көрсөңүз, ачкычтын форматы туура экендигин текшериңиз. Ката жөнүндө googling болгондо, адатта туура эмес уруксаттар жөнүндө окуп, apache 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