Java 8u181 (Java 8 Update 181) повышает безопасность соединений LDAPS:
Изменение: улучшена поддержка LDAP. Включена идентификация конечной точки. на LDAPS-соединениях. Для повышения устойчивости LDAPS (безопасный LDAP через TLS), алгоритмы идентификации конечных точек были включен по умолчанию. Обратите внимание, что могут быть ситуации, когда некоторые приложения, которые ранее могли успешно подключаться к Сервер LDAPS, возможно, больше не сможет этого сделать. Такие приложения могут, если они сочтут целесообразным отключить идентификацию конечных точек с помощью нового системное свойство: com.sun.jndi.ldap.object.disableEndpointIdentification. Определите это системное свойство (или установите для него значение true), чтобы отключить идентификацию конечной точки алгоритмы. JDK-8200666 (не общедоступно)
Похоже, одно из этих улучшений проверяет, указано ли доменное имя в сертификате. Однако поведение Active Directory по умолчанию, похоже, заключается в том, чтобы иметь только имя для сервера AD, которое возвращается под множеством A-записей доменного имени AD - и кажется, что клиенты редко поддерживают список хостов.
Я также вижу этот шаблон вне Java (то есть программы Go будут это сейчас проверять, см. Примечания к выпуску Go 1.10 на Certificate.Verify ).
Есть несколько пугающая техническая статья о внесении имен в сертификат, который будет обновлен: https://blogs.technet.microsoft.com/russellt/2016/06/03/custom-ldap -certs /
Я уверен, что не только я здесь сталкиваюсь с этим:
Мы столкнулись с одной и той же проблемой, и есть несколько решений, чтобы исправить это.
Коренная причина: Это НЕ сработает только при использовании имени хоста пула.
Исправление 1: Включите -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
в ваше приложение JAVA_OPTS
и перезапустите сервер tomcat/application. Это сделано для того, чтобы избежать строгой проверки конечной точки.
Исправление 2: Используйте точное имя хоста (FQDN), указанное в сертификате представления LDAPS.
Знайте FQDN вашего сервера LDAPS: openssl s_client - подключите [LDAPS IP/DNS сервера]:636
. Попробуйте подключить сервер LDAPS с помощью IP/DNS. В атрибуте CN=
отображается точное FQDN. Используйте это FQDN для настройки сервера LDAPS.