Форум проекта Pro-LDAP.ru
Администрирование OpenLDAP => Вопросы безопасности => Тема начата: acmnu от 30 Октябрь 2013, 13:10:48
-
Переезжаю с Debian, страшно сказать, 4 на RHEL 6 и хожу по граблям TLS, который конечно с багами: https://bugzilla.redhat.com/show_bug.cgi?id=857455.
Поэтому вопрос простой. Как запретить проверку сертификатов? Совсем запретить? На стороне мастера вроде как olcTLSVerifyClient=never, но это похоже не помогает, поскольку на клиенте я отхватываю проблемы ещё при старте в не зависимости от TLS_REQCERT.
bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
slapd starting
TLS: error: the certificate '/etc/openldap/ldap2.pem' could not be found in the database - error -8187:security library: invalid arguments..
TLS: certificate '/etc/openldap/ldap2.pem' successfully loaded from PEM file.
TLS: no unlocked certificate for certificate
Возможно я чего-то не понимаю в этой конструкции.
-
Здравствуйте! Вы хотите вообще избавиться от TLS, или только от проверки клиентского сертификата?
И ещё, покажите, пожалуйста, ваши директивы настройки TLS в конфигурации сервера и конфигурационном файле клиента. Сертификаты и ключи сами генерировали?
Егор
-
Избавится хочу только от проверки, разумеется, ибо она забагована. От tls избавляться глупо.
-
Клиент:
TLS_REQCERT never
Сервер:
olcTLSCACertificateFile: /etc/openldap/masterldap.pem
olcTLSCertificateFile: /etc/openldap/masterldap.pem
olcTLSCertificateKeyFile: /etc/openldap/masterldap.pem
olcTLSCipherSuite: DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:DES-CBC3-S
olcTLSVerifyClient: never
-
Полдня ковыряний говорят о том, что это связано с указанным выше багом: всегда используется /etc/openldap/certs и все остальные параметры игнорируются. Вроде я напихал в этот certs все ca, которые нужны, но толку мало.
-
Здравствуйте!
Сервер:
olcTLSCACertificateFile: /etc/openldap/masterldap.pem
olcTLSCertificateFile: /etc/openldap/masterldap.pem
olcTLSCertificateKeyFile: /etc/openldap/masterldap.pem
olcTLSCipherSuite: DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:DES-CBC3-S
olcTLSVerifyClient: never
У вас 3 директивы указывают на один и тот же файл. Если корневой сертификат (olcTLSCACertificateFile) и сертификат сервера (olcTLSCertificateFile) могут быть одним сертификатом (если это самоподписанный сертификат), то закрытый ключ сервера (olcTLSCertificateKeyFile) никак не может храниться в том же самом pem-файле. Вероятно, это ошибка.
Клиент:
TLS_REQCERT never
Тут явно не хватает директивы
TLS_CACERT /etc/openldap/masterldap.pem
с указанием файла корневого сертификата, чтобы можно было проверить подлинность сертификата сервера
В bug report говорится об ошибке, когда при указании в ldap.conf директивы TLS_CACERTDIR неверно обрабатываются клиентские сертификат/ключ из директив TLS_CERT и TLS_KEY. Мне кажется, это не Ваш случай.
Егор
-
> Вероятно, это ошибка.
Нет. Ключ там же. Иначе бы мастер даже не стартанул. Это нормальная практика, когда все сваливается в один pem файл. Собственно я настройки вообще не менял - это все взято из старого slapd.conf
-
TLS_CACERT я проверял. Не работает. В общем я могу все что угодно писать в ldap.conf результат один и тот же. Создается ощущение, что в openldap вкрутили какую-то свою базу сертификатов.
-
Полез в код этого поделия. Моя ошибка возникает из-за того, что openldap упрямо хочет испльзовать ерундень под названием MOZNSS (это такая директория для хранения сертификатов) и другие варианты игнорирует.
-
Здравствуйте! MozNSS -- это библиотека, точнее одна из библиотек работы с TLS, шифрованием и т.п. Очевидно, в RedHat openldap собран с этой библиотекой. На мой взгляд, это не должно быть проблемой, хотя сам я использую OpenSSL.
Есть ещё предположение -- используют ли Ваши клиенты тот ldap.conf, с которым Вы экспериментируете? Не знаю, как проверить это "по умному". Я проверил так: изменил в своём ldap.conf переменную BASE на неправильную и попробовал выполнить ldapsearch без указания параметра -b, на что получил:
# ldapsearch -x -LLL
No such object (32)
Попробуйте запустить клиента с явным указанием переменной окружения:
# LDAPTLS_CACERT=/etc/openldap/masterldap.pem ldapsearch ...
Если не найдёте решения, всегда есть запасной вариант: собрать OpenLDAP руками с библиотекой OpenSSL.
Егор
-
Я уже более менее разобрался. Ошибка, которая у меня возникала - не ошибка. :)
Хотя я так подумал исходя из того, что там на писано "error". Реальная же ошибка была в виде неприметного сообщения. got search entry without Sync State control
, которое сообщало, что я лажанулся при настройки syncrep.
Похоже, что в моей конфигурации тот error ничего не значит, либо он вообще ничего не значит, поскольку там половина debug мессаджей означает не то, что там написано.
-
Здравствуйте! TLS-то в итоге работает? Если да, покажите, пожалуйста, итоговые директивы TLS сервера и клиента.
Егор