Hi guys..
I have been trying to connect to an open ldap server using ssl/ldaps
I can connect to that server using apache studio(via ldaps) and I would
like to connect to the same server using the apache api.
This is the code... One detail is that I generated the key in the server
using openssl
Then I have done some research and some people say that I need to generate
a key in the java pattern.. so then I generated a PKCS #12 key store using
something like
openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12
and then
keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks
-srcstoretype pkcs12
I have attached the stacktrace..
The exception happens in the bind method
public static void initConnection() throws LdapException, IOException {
LdapConnection conn ...
if (conn == null) {
LdapConnectionConfig connectionConfig = new
LdapConnectionConfig();
KeyManagerFactory keyManagerFactory = null;
try {
FileInputStream fis = new FileInputStream("server.jks");
keyManagerFactory =
KeyManagerFactory.getInstance("SunX509");
KeyStore keyStore =
KeyStore.getInstance(KeyStore.getDefaultType());
char[] password = new String("mykeyPass").toCharArray();
keyStore.load(fis, password);
keyManagerFactory.init(keyStore, password);
keyManagerFactory.getKeyManagers();
connectionConfig.setKeyManagers(keyManagerFactory.getKeyManagers());
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace(System.out);
} catch (KeyStoreException ex) {
ex.printStackTrace(System.out);
} catch (UnrecoverableKeyException ex) {
ex.printStackTrace(System.out);
} catch (CertificateException ex) {
ex.printStackTrace(System.out);
}
connectionConfig.setLdapHost("myhost");
connectionConfig.setLdapPort(636);
connectionConfig.setName("cn=Manager,dc=example,dc=com");
connectionConfig.setCredentials("mypass");
connectionConfig.setUseSsl(true);
connectionConfig.setSslProtocol("SSLv3");
conn = new LdapNetworkConnection(connectionConfig);
conn.connect();
conn.bind();
}
Thanks
Flavio