Gregorio Alejandro Pati�o Zabala wrote: > > Hi, > > I am trying to find the way to connect my program to my LDAPS Netscape > Server, but I cannot find the way to do it...
Here are a few tips: - You need a real SSL provider. LDAPSSLSocketFactory assumes netscape.net.SSLSocket which is in Communicator, unless you pass in the name of a class. You can use the org.mozilla.jss.ssl.SSLSocket class that comes with JSS (get it from http://www.mozilla.org/projects/security/pki/jss/). Or use netscape.ldap.factory.JSSESocketFactory along with the reference implementation of JSSE from Sun (included in JDK 1.4, a separate download before that). JSS is much faster than JSSE. In both cases you'll need key and certificate files. For JSS you can copy over key3.db and cert7.db from Communicator. - No need to do ld.getSocketFactory().makeSocket. That method is called internally. - Make sure your server really is running SSL. You can check in the error log to see if an SSL port was enabled when the server started. Rob > > This is my code... > > import netscape.ldap.*; > > public class SSLSample { > > String host; > String user; > String password; > > public static final int SSL_PORT = 636; > public static final String FILTER = "&(objectclass=inetOrgPerson)(cn="; > public static final String BASEDN = "o=mycompany"; > > SSLSample(String h, String u, String p){ > host = h; > user = u; > password = p; > } > > void run(){ > LDAPConnection ld = null; > String dn = null; > try { > ld = new LDAPConnection(new LDAPSSLSocketFactory()); > // > ld.connect(host, SSL_PORT); > ld.getSocketFactory().makeSocket(host, SSL_PORT); > String filter = FILTER + user + ")"; > LDAPSearchResults res = ld.search (BASEDN, LDAPv2.SCOPE_SUB, > filter, null, false); > if (res != null && res.hasMoreElements ()){ > LDAPEntry entry = res.next(); > dn = entry.getDN(); > } > ld.authenticate(dn, password); > System.out.println("User authenticated: " + dn); > } catch(LDAPException e){ > e.printStackTrace(); > } catch(Exception e2){ > e2.printStackTrace(); > } finally { > try { > ld.finalize(); > } catch (Exception ex) { } > } > > } > > public static void main(String [] args){ > > if (args.length != 3){ > System.out.println("Usage: SSLSample <server> <user> ><passwd>"); > System.exit(-1); > } > SSLSample s = new SSLSample(args[0], args[1], args[2]); > try { > s.run(); > } catch (Exception e){ > e.printStackTrace(); > } > } > } > > And this is my execution result: > > c:\>java SSLSample server user passwd > netscape.ldap.LDAPException: Failed to create SSL socket (91); Cannot > connect to > the LDAP server > at > netscape.ldap.LDAPSSLSocketFactory.makeSocket(LDAPSSLSocketFactory.ja > va:309) > at SSLSample.run(SSLSample.java:26) > at SSLSample.main(SSLSample.java:57)
