Всех приветствую!
Столкнулся с проблемой при разработке интеграции с OpenLdap
При использовании обычного ldap проблем нет, но они начинаются, когда на openldap стоит обязательное требование TLS
Для работы с ldap использую directorytree/ldaprecord
Кейс примерно следующий:
есть два файла сертификатов:
1) cert1.crt - действительный rootca с данного сервера ldap
2) cert2.crt - rootca с другого сервера
если в конфиге подключения я указываю
.....
'use_tls' => true,
'version' => 3,
'follow_referrals' => false,
'options' => [
LDAP_OPT_X_TLS_CACERTFILE => storage_path('app/tmp/{файл_сертификата}'),
]
если я указываю cert1 - все успешно
если меняю на cert2 - так же успешно
перезапускаю контейнер докера и получаю
ldap_start_tls(): Unable to start TLS: Connect error
меняю обратно на cert1.crt
ошибка либо останется, либо будет выскакивать через раз (закономерность не смог выявить)
Почему это проблема:
Основной кейс использования данного функционала следующий:
Пользователю предоставляется интерфейс для заполнения данных настройки подключения к ldap серверу и кнопка проверить подключение.
Не стоит исключать ситуацию, когда в первый раз пользователь приложит не верный сертификат, в таком случае все его дальнейшие проверки нажатия кнопки будут давать не верный результат
Какие вижу варианты:
1) происходит кэширование - но как я понял в данной библиотеке кэшируются результаты выполнения запросов и это нужно принудительно указывать
2) при отправке запроса сертификат устанавливается в контейнере, но тогда остается вопрос, почему если мы сначала вводим не верный сертификат, а потом верный, то не получаем положительного результата