В Ubuntu 20.04 я обнаружил, что мне пришлось отключить TLS1.3, установив LDAPTLS_CIPHER_SUITE='НОРМАЛЬНЫЙ:!VERS-TLS1.3'
чтобы заставить ldapsearch работать с Google LDAP.
Как я сюда попал:
Команда ldapsearch поддерживает вывод увеличенной отладки на консоль с помощью команды -d уровень отладки
флаг. Уровень отладки 1 (-d1
) мне было достаточно, более высокие уровни отладки становятся очень многословными и трудными для чтения.
Простая команда отладки может выглядеть так:
vagrant@focal:~$ ldapsearch -H ldaps://ldap.google.com:636 -d1
Отсюда я мог видеть, что сертификат не является доверенным:
...
попытка подключения:
подключить успех
TLS: одноранговый сертификат ненадежен или отозван (0x42)
TLS: не удается подключиться: (неизвестный код ошибки).
...
Это не имело никакого смысла. Сертификат, возвращаемый ldap.google.com, действителен и может быть проверен по моему /etc/ssl/сертификаты/ca-certificates.crt
с использованием openssl s_client -connect ldap.google.com:636 -CAfile /etc/ssl/certs/ca-certificates.crt
но ldapsearch не доверял этому.
я наконец наткнулся эта почта в списке рассылки OpenLDAP, в котором объяснялось, что проблема заключалась в том, что SNI не поддерживается, что может привести к тому, что Google вернет недействительный самозаверяющий сертификат. Мне не удалось найти правильное исправление, но обходной путь внизу для отключения TLS1.3 путем установки LDAPTLS_CIPHER_SUITE
у меня работала переменная среды, потому что мой OpenLDAP использовал GnuTLS. Если вы используете OpenSSL, вам, вероятно, потребуется найти другой обходной путь, но основная причина, вероятно, все та же.