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 / приложений. Это сделано для того, чтобы избежать строгой проверки конечной точки.
Исправление 2: используйте точное имя хоста (FQDN), указанное в сертификате представления LDAPS.
Знайте свое полное доменное имя сервера LDAPS: openssl s_client -connect [LDAPS server IP/DNS]:636
. Попробуйте подключить сервер LDAPS по IP / DNS. Он отображает точное полное доменное имя в CN=
атрибут. Используйте это полное доменное имя для настройки сервера LDAPS.