sslexception sigma not net keypair generate enlaces enlace could cantidad java ldap jndi

java - not - enlace sigma



javax.naming.CommunicationException: error de enlace simple (3)

Está intentando trabajar con LDAP sobre SSL (ldaps en el nombre del protocolo + sus puntos de excepción). No tienes certificados, por lo que SSL no funciona. Tienes 2 opciones:

  1. No trabaje con SSL
  2. Configure los certificados correctamente.

Cuando trato de conectarme al servidor LDAP usando una aplicación LDAP simple, recibo un error que dice "fallo simple de enlace". Supongo que esto está relacionado con algún tipo de BIND. Tengo una propiedad bind en el archivo propery para una aplicación diferente, pero no estoy seguro de cómo transferir esa propiedad a este programa.

¿Debo agregar más detalles?

Código

import javax.naming.directory.*; import javax.naming.*; import java.util.Vector; import java.util.Enumeration; import java.util.Properties; public class SearchLDAP { public static void main(String[] args) { String base = ""; String filter = "(objectclass=*)"; Properties env = new Properties(); env.put(DirContext.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); env.put(DirContext.PROVIDER_URL,"ldaps://misguided.com.au:343"); try { System.out.println("11"); DirContext dc = new InitialDirContext(env); System.out.println("22"); SearchControls sc = new SearchControls(); sc.setSearchScope(SearchControls.OBJECT_SCOPE); NamingEnumeration ne = null; ne = dc.search(base, filter, sc); while (ne.hasMore()) { SearchResult sr = (SearchResult) ne.next(); System.out.println(sr.toString()+"/n"); } dc.close(); } catch (NamingException nex) { System.err.println("Error: " + nex.getMessage()); nex.printStackTrace(); } } }

El error que estoy recibiendo es

Error

11 Error: simple bind failed: XXXX.XXX.XXXX.net:808 javax.naming.CommunicationException: simple bind failed: misguided.com.au:343 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target] at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:215) at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740) at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316) at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)


La pregunta es un poco más antigua ahora pero bastante común. Intentando explicarlo en pocas palabras:

El problema ocurre debido a la falta de certificados SSL en el almacén de claves de JRE.

Para una conexión LDAPS o HTTPS, el tiempo de ejecución de Java necesita usar el certificado SSL respectivo para crear una conexión segura con el servidor en el otro extremo.

Para recoger el certificado SSL de su almacén de claves, el certificado primero debe instalarse en el almacén de claves de Java. El comando ''keytool'' ayuda a importar / exportar certificados hacia y desde Java Keystore.

keytool –import -file adserv.crt -keystore <location to keystore>

Cuando falta, obtienes un:

"sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target".

Entonces, todo lo que necesita hacer es instalar el certificado antes de establecer una conexión segura.


También recibí el mismo error como a continuación. Agregar solución, si esto ayuda a alguien.

Recibí de IBM WAS 8.5 mientras me conectaba a LDAP.

Tenía que asegurarme de que "Nombre del almacén de claves" esté seleccionado para NodeDefaultKeystore y los alias sean "ninguno"

Certificado SSL y gestión de claves> Configuraciones SSL> NodeDefaultSSLSettings

Causado por: javax.naming.CommunicationException: el enlace simple falló: xxxxxx-xxx.xxxxx.xxx:636 [La excepción de raíz es javax.net.ssl.SSLHandshakeException: el host remoto cerró la conexión durante el protocolo de enlace]