Как правильно проверять сертификат CA при подключении к ldap серверу
Столкнулся с проблемой при разработке интеграции с OpenLdap При использовании обычного ldap проблем нет, но они начинаются, когда на openldap стоит обязательное требование TLS
Для работы с ldap использую directorytree/ldaprecord
Кейс примерно следующий:
есть два файла сертификатов:
- cert1.crt - действительный rootca с данного сервера ldap
- 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 серверу и кнопка проверить подключение. Не стоит исключать ситуацию, когда в первый раз пользователь приложит не верный сертификат, в таком случае все его дальнейшие проверки нажатия кнопки будут давать не верный результат
Какие вижу варианты:
- происходит кэширование - но как я понял в данной библиотеке кэшируются результаты выполнения запросов и это нужно принудительно указывать
- при отправке запроса сертификат устанавливается в контейнере, но тогда остается вопрос, почему если мы сначала вводим не верный сертификат, а потом верный, то не получаем положительного результата