You should not use SSL, but startTLS.
Using SSL in LDPA has been deprecated. Not that it does not work, but
it's not the way to secure your connection to the server, as it requires
a second port.
Doing something like :
LdapConnectionConfig tlsConfig = new LdapConnectionConfig();
tlsConfig.setLdapHost( ... );
tlsConfig.setLdapPort( ... );
tlsConfig.setTrustManagers( <your TrustManager> );
connection = new LdapNetworkConnection( tlsConfig );
connection.connect();
connection.startTls();
connection.bind( ... );
is the correct way to connect to a LDAP server.
Le 2/27/13 1:38 PM, [email protected] a écrit :
> Hello,
>
> I am currently working with version M12 of the Apache LDAP API (this was the
> latest version when I began to develop). The connection to the LDAP server is
> established without SSL, and it works fine.
>
> Due to security reasons we want to change the connection to SSL. So I created
> a keystore file .keystore which includes the same certificate which I am
> using with the Apache Directory Studio Client to connect to the LDAP server
> via SSL. In the Apache Directory Studio Client, the certificate works without
> problems. Trying to connect with the LDAP API results in
> InvalidConnectionException at the connection.bind statement.
>
> org.apache.directory.ldap.client.api.exception.InvalidConnectionException:
> SSL handshake failed.
> at
> org.apache.directory.ldap.client.api.LdapNetworkConnection.writeRequest(LdapNetworkConnection.java:3808)
> at
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bindAsync(LdapNetworkConnection.java:1170)
> at
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1075)
> at
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:120)
> at
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:105)
> at TestSSL.main(TestSSL.java:50)
>
> Here the code to connect to the LDAP server with the LDAP API:
>
> boolean useSSL = true;
> LdapNetworkConnection connection = null;
> LdapConnectionConfig ldapConnectionConfig = null;
> if (useSSL) {
> ldapConnectionConfig = new LdapConnectionConfig();
> ldapConnectionConfig.setUseSsl(true);
> ldapConnectionConfig.setLdapHost(<host>);
> ldapConnectionConfig.setLdapPort(<port>);
> ldapConnectionConfig.setSslProtocol("SSLv3");
> char[] pw = null;
> KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
> try {
> FileInputStream fis = new FileInputStream(".keystore");
> pw = new String("<password>").toCharArray();
> ks.load(fis, pw);
> }
> catch (Exception e) {
> e.printStackTrace();
> }
> KeyManagerFactory keyManagerFactory =
> KeyManagerFactory.getInstance("SunX509");
> keyManagerFactory.init(ks, pw);
> KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
> ldapConnectionConfig.setKeyManagers(keyManagers);
> connection = new LdapNetworkConnection(ldapConnectionConfig);
> }
> else {
> connection = new LdapNetworkConnection(<host>, <port>);
> }
> try {
> connection.bind(<bind string>, <password>);
> ...
> With useSSL=false the program works right.
>
> Does anyone have an idea what is missing? Could you provide me an example
> which is working?
>
> Thank you very much.
>
> Regards
> Michael Schmitz
>
> T-Systems International GmbH
> Systems Integration
> GDC Big Data & BI SC BI & CRM
> Michael Schmitz
> Senior Consultant
> Hausadresse: Fasanenweg 5, 70771 Leinfelden-Echterdingen
> Postanschrift: Postfach 100258, 70746 Leinfelden
> Neu: Telefon: +49 (711) 999 - 7717
> Mobil: +49 (170) 863 1918
> E-Mail: [email protected]
> Internet: <http://www.t-systems.com<http://www.t-systems.com/>>
> T-Systems
> International<https://systemsnet.telekom.de/tool/de_systemswiki/index.php/Enterprise_Services>
> GmbH
> Aufsichtsrat<https://systemsnet.telekom.de/tool/de_systemswiki/index.php/Aufsichtsrat>:
> René Obermann (Vorsitzender)
> Geschäftsführung: Reinhard Clemens (Vorsitzender), Dr. Ferri Abolhassan, Dr.
> Markus Müller, Georg Pepping, Hagen Rickmann, Klaus Werner
> Handelsregister: Amtsgericht Frankfurt am Main HRB 55933
> Sitz der Gesellschaft: Frankfurt am Main
> WEEE-Reg.-Nr. DE50335567
>
> Notice: This transmittal and/or attachments may be privileged or
> confidential. If you are not the intended recipient, you are hereby notified
> that you have received this transmittal in error; any review, dissemination,
> or copying is strictly prohibited. If you received this transmittal in error,
> please notify us immediately by reply and immediately delete this message and
> all its attachments. Thank you.
>
>
>
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com