Вопрос по jndi, java, ldap – javax.naming.CommunicationException: простое связывание не удалось

15

При попытке подключиться к серверу LDAP с помощью простого приложения LDAP, я получаю сообщение об ошибке «Простое связывание не удалось». Я предполагаю, что это связано с каким-то BIND. У меня есть свойство связывания в одном из файлов свойств для другого приложения, но я не уверен, как передать это свойство этой программе.

Нужно ли добавлять какие-либо дополнительные детали?

Код

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();
        }   
    }   
}  

Я получаю ошибку

ошибка

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)
& quot; sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти действительный путь сертификации для запрошенной цели & quot; может иметь какое-то отношение к этому Jon Lin

Ваш Ответ

3   ответа
13

но довольно распространенный. Попытка объяснить это вкратце:

Проблема возникает из-за отсутствия SSL-сертификатов в хранилище ключей JRE.

Для соединения LDAPS или HTTPS среда выполнения Java должна использовать соответствующий сертификат SSL для создания защищенного соединения с сервером на другом конце.

Для получения сертификата SSL из его хранилища ключей, сертификат должен быть сначала установлен в хранилище ключей Java. «Keytool» Команда помогает импортировать / экспортировать сертификаты в и из Java Keystore.

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

Когда его не хватает, вы получаете:

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

Итак, все, что вам нужно сделать, это установить сертификат перед установкой защищенного соединения.

0

как показано ниже. Добавление исправления, если это кому-то поможет.

Я получил от IBM WAS 8.5 при подключении к LDAP.

Я должен был убедиться, что «имя хранилища ключей» выбрано для NodeDefaultKeystore и псевдонимы "нет";

SSL-сертификат и управление ключами & gt; Конфигурации SSL & gt; NodeDefaultSSLSettings

Вызвано: javax.naming.CommunicationException: простое связывание не удалось: xxxxxx-xxx.xxxxx.xxx:636 [Исключением root является javax.net.ssl.SSLHandshakeException: удаленное соединение закрыло соединение во время рукопожатия]

1

исключение указывает на это). У вас нет сертификатов, поэтому SSL не работает. У вас есть 2 варианта:

Don't work with SSL Configure certificates properly.

Похожие вопросы