2013-08-18 5 views
0

У меня есть сервер LDAP на солнечной машине, и мое веб-приложение может подключаться к порту LDAP через порт 389. Теперь я хочу подключиться к LDAP через SSL, используя порт 636. На моем сервере LDAP я установил сертификат. Теперь я экспортировал сертификат с помощью ключа с сервера LDAP, чтобы использовать этот сертификат в своем веб-приложении. На той же машине также установлен мой сервер Glassfish. Я скопировал сертификат в папку/usr/java/jre/lib/security /. Теперь в моем веб-приложении я использовал этот код для подключения к LDAP через sll, но он не может подключиться к LDAP.как включить ldap over ssl в jndi

Hashtable ht = new Hashtable(); 
ht.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
ht.put(Context.PROVIDER_URL,"ldap://ldapserver:636"); 
ht.put(Context.SECURITY_AUTHENTICATION, "EXTERNAL"); 
// ht.put(Context.SECURITY_AUTHENTICATION, "simple"); 
System.setProperty("javax.net.ssl.keyStore","/usr/java/jre/lib/security/cert"); 
System.setProperty("javax.net.ssl.keyStorePassword",certpass); 
ht.put(Context.SECURITY_PRINCIPAL,binddn); 
// Specify SSL 
ht.put(Context.SECURITY_PROTOCOL, "ssl"); 
ht.put(Context.SECURITY_CREDENTIALS,bindpass); 

Что я делаю неправильно? Пожалуйста, поправьте меня.

ответ

0

Если сертификат SSL/TLS, установленный на вашем LDAP-сервере, является самоподписанным или его сертификат подписчика не существует в вашей доверенной базе JVM lib/security/cacerts, вам необходимо импортировать сертификат в доверительный магазин и указать, где находится этот доверенный магазин путем установки свойств системы javax.net.ssl.trustStore и javax.net.ssl.trustStorePassword. Кажется, вы уже импортировали сертификат в файл JKS (при условии, что это формат JKS). Вам нужно указать javax.net.ssl.trustStore в этот файл и указать его пароль, чтобы JVM мог получить к нему доступ.

Смежные вопросы