Форум проекта Pro-LDAP.ru

Администрирование OpenLDAP => Вопросы безопасности => Тема начата: acmnu от 30 Октябрь 2013, 13:10:48

Название: Как задезейблить проверку сертификатов
Отправлено: 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


Возможно я чего-то не понимаю в этой конструкции.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: egor от 30 Октябрь 2013, 15:09:35
Здравствуйте! Вы хотите вообще избавиться от TLS, или только от проверки клиентского сертификата?
И ещё, покажите, пожалуйста, ваши директивы настройки TLS в конфигурации сервера и конфигурационном файле клиента. Сертификаты и ключи сами генерировали?

Егор
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 30 Октябрь 2013, 16:16:14
Избавится хочу только от проверки, разумеется, ибо она забагована.  От tls избавляться глупо.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 30 Октябрь 2013, 16:20:21
Клиент:
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

Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 30 Октябрь 2013, 16:31:58
Полдня ковыряний говорят о том, что это связано с указанным выше багом: всегда используется /etc/openldap/certs и все остальные параметры игнорируются. Вроде я напихал в этот certs все ca, которые нужны, но толку мало.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: egor от 31 Октябрь 2013, 07:44:24
Здравствуйте!

Сервер:
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. Мне кажется, это не Ваш случай.

Егор
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 31 Октябрь 2013, 10:08:42
> Вероятно, это ошибка.

Нет. Ключ там же. Иначе бы мастер даже не стартанул. Это нормальная практика, когда все сваливается в один pem файл. Собственно я настройки вообще не менял - это все взято из старого slapd.conf
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 31 Октябрь 2013, 10:16:51
TLS_CACERT я проверял. Не работает. В общем я могу все что угодно писать в ldap.conf результат один и тот же. Создается ощущение, что в openldap вкрутили какую-то свою базу сертификатов.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 31 Октябрь 2013, 12:55:35
Полез в код этого поделия.  Моя ошибка возникает из-за того, что openldap упрямо хочет испльзовать ерундень под названием MOZNSS (это такая директория для хранения сертификатов) и другие варианты игнорирует.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: egor от 31 Октябрь 2013, 14:59:08
Здравствуйте! 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.

Егор
Название: Re: Как задезейблить проверку сертификатов
Отправлено: acmnu от 31 Октябрь 2013, 15:32:51
Я уже более менее разобрался. Ошибка, которая у меня возникала - не ошибка. :)

Хотя я так подумал исходя из того, что там на писано "error". Реальная же ошибка была в виде неприметного сообщения.
Цитировать
got search entry without Sync State control
, которое сообщало, что я лажанулся при настройки syncrep.

Похоже, что в моей конфигурации тот error ничего не значит, либо он вообще ничего не значит, поскольку там половина debug мессаджей означает не то, что там написано.
Название: Re: Как задезейблить проверку сертификатов
Отправлено: egor от 01 Ноябрь 2013, 05:10:34
Здравствуйте! TLS-то в итоге работает? Если да, покажите, пожалуйста, итоговые директивы TLS сервера и клиента.

Егор