Я использовал следующий файл LDIF для активации поддержки TLS сервера LDAP:
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
-
add: olcTLSCRLCheck
olcTLSCRLCheck: none
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
-
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/CA.crt
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/server.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/key.pem
и вызовите использование TLS для соединений клиента со следующим LDIF:
dn: cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
После этого я не могу использовать "-Y ВНЕШНИЙ" больше, чтобы прочитать или изменить схему конфигурации. Например, я получаю ошибку SASL, если я работаю:
$ sudo ldapsearch -Q -Y EXTERNAL -H ldapi:/// -b "" -LLL -s base -Z supportedSASLMechanisms
ldap_sasl_interactive_bind_s: Authentication method not supported (7)
additional info: SASL(-4): no mechanism available:
и если я проверяю на поддерживаемые механизмы SASL:
$ sudo ldapsearch -x -H ldapi:/// -b "" -LLL -s base -Z supportedSASLMechanisms
dn:
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: NTLM
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: LOGIN
Я действительно не вижу ВНЕШНЕЕ, включенное в список. Что я пропускаю здесь?
Это находится на Ubuntu 12.04 и slapd-2.4.31.
Без доступа к запущенной конфигурации вы должны остановить slapd
и отредактировать конфигурацию в автономном режиме.
slapd
: service slapd stop
slapcat -F /etc/ldap/slapd.d -b cn=config -l config.ldif
mv /etc/ldap/slapd.d{,.old}
сделаем новую, пустую конфиговую базу данных:
mkdir /etc/ldap/slapd.d
chown --reference=/etc/ldap/slapd.d.old /etc/ldap/slapd.d
chmod --reference=/etc/ldap/slapd.d.old /etc/ldap/slapd.d
. ldif
для удаления настройки olcSecurity
(или добавления olcRootDN
и olcRootPW
в cn=config
, или любых других изменений, которые вам нравятся)slapadd -F /etc/ldap/slapd.d -b cn=config -l config.ldif
(Вышеуказанное предполагает, что ваша конфигурация живёт по умолчанию в /etc/ldap/slapd.d
в Debian и Ubuntu. )
Обратите внимание, что slapadd
из полного LDIF всегда должен быть выполнен в пустой БД; поэтому, если вы ошиблись и slapadd
не работает, убедитесь, что вы очистили частичную БД перед повторной попыткой.
Дополнительную информацию вы можете найти в Руководстве администратора OpenLDAP, а также на соответствующих man-страницах.
.Глядя в код: на стороне сервера, в серверах/slapd/daemon.c, authid для EXTERNAL настраивается с помощью uid и gid вскоре после входящего соединения становится accept()
ed. Позже, в серверах/slapd/connection.c, если TLS активен, он перезаписывает его именем из клиентского сертификата. Поскольку вы не предоставляете клиентский сертификат, в этот момент автохид перезаписывается NULL, что делает EXTERNAL недоступным.
Одним словом, если TLS активен, то автохид uid+gid не используется. В зависимости от вашей точки зрения, это можно считать ошибкой; в идеале это возвращается к персифицированному ID.
Тем не менее, TLS на ldapi действительно не нужен, так как локальный сокет уже обеспечивает полную конфиденциальность; поэтому вы можете установить olcSecurity
только в собственной БД, оставив его не установленным для фронтэнда и cn=config
(см. e. g. этот пост ), или вы можете использовать ssf=
вместо tls=
и установить olcLocalSSF
соответствующим образом. Или вы можете использовать другой DN в качестве менеджера для cn=config
, чтобы не зависеть от передаваемой функции.
Спасибо, rtandy. Я действительно не хотел устанавливать его на ldapi, но не знал, что это тоже повлияет.
Проблема в том, что ВНЕШНИЙ был единственным способом изменить cn = config
, так как я потерял этот доступ и не создал другого администратора cn = config
как предложили, есть ли другой способ решить эту проблему?
Использование ldappi:/// вместо ldap:// решило проблему для меня после активации starttls на моем system
sudo ldapmodify -Y EXTERNAL -H ldapi:// -f pwd2.ldif
работает, тогда как
sudo ldapmodify -Y EXTERNAL -f pwd2.ldif
сообщил
SASL/ВНЕШНЯЯ аутентификация запущена ldap_sasl_interactive_bind_s: Неизвестный метод аутентификации (-6) дополнительная информация: SASL(-4): нет Доступный механизм: