Вопрос или проблема
У меня работает сервер Red Hat 8.10 с OpenLDAP Server 2.4.46, настроенный для TLS через порт 389 и с самоподписанным сертификатом. Я использую sssd для аутентификации.
На сервере LDAP работает команда id (username). Команда ldapsearch -x uid=(username) работает. Я могу входить с помощью SSH ключей. Я не могу войти с помощью пароля.
Когда я пытаюсь войти с паролем, мне отказывается в аутентификации. Сообщение об ошибке slapd:
slapd conn=1221 op=0 do_extended: unsupported operation “1.3.6.1.4.1.1466.20037”
sssd показывает схожую ошибку.
Кто-нибудь знает, как это исправить? Это связано с тем, что TLS не устанавливает безопасное соединение, и это всё, что мне известно. Я не понимаю, какие сертификаты необходимы и какие добавить в CA-Trust (и как это сделать).
Интернет оказался ужасно бесполезным.
P.S. Мне ничего не мешает использовать ldaps на порту 636, просто я не уверен, как его настроить.
Ответ или решение
По описанию вашей проблемы можно сделать вывод, что вы сталкиваетесь с трудностями, связанными с использованием TLS на сервере OpenLDAP, установленном на RHEL 8.10, для обеспечения безопасности аутентификации через sssd. Основной упор стоит сделать на настроек TLS и использовании самозаверяющего сертификата, а также на обработке ошибки, связанной с неподдерживаемой операцией.
Теория
TLS (Transport Layer Security) — это криптографический протокол, который обеспечивает безопасный обмен данными между клиентом и сервером. Для работы TLS вам необходимы корректные сертификаты, которые удостоверяют аутентичность сервера. В случае с OpenLDAP обычно используется самозаверяющий сертификат, что часто приводит к множеству проблем, связанных с доверием и правильной настройкой.
Ошибка unsupported operation "1.3.6.1.4.1.1466.20037"
указывает на несовпадение ожиданий клиента и сервера в процессе установления защищенного соединения. Эта ошибка обычно связана с нехваткой поддержки StartTLS как расширенной операции на уровне OpenLDAP. А поскольку вы используете TLS, это может быть связано с тем, как и где ваш сертификат зарегистрирован.
Пример
Вы упоминаете, что можете использовать id (username)
и ldapsearch -x uid=(username)
, что указывает на работоспособность базового уровня LDAP без TLS. Однако при попытке работы через TLS сервер не распознает операцию и отклоняет аутентификацию с паролем.
Пример успешного подключения без использования TLS:
ldapsearch -x -h ldap.example.com -b "dc=example,dc=com" "(uid=john)"
Аналогичный запрос с использованием TLS может выглядеть следующим образом:
ldapsearch -x -H ldaps://ldap.example.com -b "dc=example,dc=com" -D "uid=admin,dc=example,dc=com" -W
Для работы этого запроса требуется корректно настроенный сертификат.
Применение
-
Проверка сертификатов:
- Убедитесь, что самозаверяющий сертификат сервера правильно установлен. Обычно он должен находиться в
/etc/openldap/certs
. - Проверьте, что сертификаты клиента и сервера вы доверяете (establish trust).
- Убедитесь, что самозаверяющий сертификат сервера правильно установлен. Обычно он должен находиться в
-
Добавление сертификата в CA-Trust:
- Чтобы ваш самозаверяющий сертификат доверяли на уровне системы, вам необходимо добавить его в хранилище доверенных сертификатов:
cp /etc/openldap/certs/my-selfsigned.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust
- Чтобы ваш самозаверяющий сертификат доверяли на уровне системы, вам необходимо добавить его в хранилище доверенных сертификатов:
-
Настройка OpenLDAP:
- Убедитесь, что файл конфигурации LDAP (
/etc/openldap/slapd.d/cn=config.ldif
) содержит правильные указания на сертификат и ключ. Например:olcTLSCertificateFile: /etc/openldap/certs/my-selfsigned.crt olcTLSCertificateKeyFile: /etc/openldap/certs/my-private.key
- Убедитесь, что файл конфигурации LDAP (
-
Конфигурация sssd:
- Проверьте файл конфигурации sssd (
/etc/sssd/sssd.conf
), чтобы он был настроен на использование правильного ldaps URL и корректные опции для обеспечения поддержки TLS.
- Проверьте файл конфигурации sssd (
-
Смена порта на 636:
- Если используемая конфигурация на порту 389 вызывает проблемы из-за StartTLS, вы всегда можете переключиться на порт 636 (LDAPS):
- Убедитесь, что
slapd
слушает порт 636:/usr/sbin/slapd -h "ldap://123.45.67.89:389/ ldaps://123.45.67.89:636/"
- Убедитесь, что
- Настройте клиентские приложения на использование
ldaps://
для соединений вместо отдельной команды StartTLS.
- Если используемая конфигурация на порту 389 вызывает проблемы из-за StartTLS, вы всегда можете переключиться на порт 636 (LDAPS):
-
Журнал и трассировка:
- Используйте логирование для отслеживания подключения и ошибки. Включите детализированное логирование в
slapd
и sssd для лучшей диагностики.
- Используйте логирование для отслеживания подключения и ошибки. Включите детализированное логирование в
Внедрение данных мер должно помочь устранить проблему, связанную с неподдерживаемой операцией и невозможностью аутентификации через TLS. Если после всех мероприятий проблема все еще сохраняется, рассмотрите обновление версии слеапд до более новой, а также обратитесь за поддержкой в RHEL, так как поддержка от производителя нередко включает специфические изменения и патчи, особенно связанных с безопасностью и интеграцией системных компонент.