Фабрика пользовательских сокетов не вызывается в Linux - работает в Windows и Mac - PullRequest
0 голосов
/ 27 августа 2018

См. Код ниже. Он отлично работает на Windows и Mac, но не на Linux. Он не вызывает класс MySSLSocketFactory, и в результате сертификат не является доверенным. Любые предложения ???

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

public class LdapBaseDN {
    public static void main(String[] args) {
        Hashtable<String, String> env = new Hashtable<String, String>();

        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.SECURITY_AUTHENTICATION, "none");
        env.put(Context.PROVIDER_URL, "ldaps://MyServerIP:636");
        env.put(Context.SECURITY_PROTOCOL, "ssl");
        env.put(Context.REFERRAL, "follow");
        env.put("java.naming.ldap.factory.socket", MySSLSocketFactory.class.getName()); //MySSLSocketFactory does not get called on Linux
        try {
            DirContext ldapContext = new InitialDirContext(env);
            System.out.println("Connected successfully ");

        } catch (Exception e) {
            e.printStackTrace(); //SSLHandshake fails because Cert is not trusted on Linux
        }
    }
}
...