
Java 8u181 (Java 8 Update 181) mejora la seguridad en torno a las conexiones LDAPS:
Cambio: mejorar la compatibilidad con LDAP. Se ha habilitado la identificación de puntos finales en las conexiones LDAPS. Para mejorar la solidez de las conexiones LDAPS (LDAP seguro sobre TLS), se han habilitado algoritmos de identificación de puntos finales de forma predeterminada. Tenga en cuenta que puede haber situaciones en las que algunas aplicaciones que anteriormente podían conectarse correctamente a un servidor LDAPS ya no puedan hacerlo. Dichas aplicaciones pueden, si lo consideran apropiado, deshabilitar la identificación de puntos finales mediante una nueva propiedad del sistema: com.sun.jndi.ldap.object.disableEndpointIdentification. Defina esta propiedad del sistema (o configúrela como verdadera) para deshabilitar los algoritmos de identificación de puntos finales. JDK-8200666 (no público)
Una de estas mejoras parece ser verificar que el nombre de dominio esté en el certificado. Sin embargo, el comportamiento predeterminado de Active Directory parece ser tener solo el nombre del servidor AD que se devuelve bajo los muchos registros A del nombre de dominio AD, y parece raro que los clientes admitan una lista de hosts.
También veo este patrón fuera de Java (es decir, los programas Go comprobarán esto ahora también.Ir a las notas de la versión 1.10 sobre Certificado.Verificar).
Hay un artículo de Technet un tanto intimidante sobre cómo obtener nombres en el certificado de una manera que se renovará:https://blogs.technet.microsoft.com/russellt/2016/06/03/custom-ldap-certs/
Estoy seguro de que no soy el único que se encuentra con esto:
- ¿Alguien ha tenido éxito al agregar el nombre al certificado o tal vez al usar un equilibrador de carga frente a LDAPS para clientes LDAP genéricos no específicos de AD?
- ¿Alguien sabe si Microsoft está abordando este tema de alguna manera que pueda tener cambios en el futuro que hagan que "deshabilitar la verificación y esperar" sea una táctica sensata?
Respuesta1
Nos encontramos con el mismo problema y hay pocas soluciones para solucionarlo.
Causa raíz: solo NO funcionará cuando use el nombre de host del grupo.
Solución 1: inclúyalo
-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
en su aplicaciónJAVA_OPTS
y reinicie Tomcat/servidor de aplicaciones. Esto es para evitar una verificación estricta del punto final.Solución 2: utilice el nombre de host exacto (FQDN) mencionado en el certificado de presentación LDAPS.
Conozca el FQDN de su servidor LDAPS: openssl s_client -connect [LDAPS server IP/DNS]:636
. Intente conectar el servidor LDAPS mediante IP/DNS. Muestra el FQDN exacto en CN=
el atributo. Utilice ese FQDN para configurar el servidor LDAPS.
- Solución 3: importe el certificado de presentación LDAPS (no el raíz ni el intermedio) en el servidor de aplicaciones.