0

トラストストア ファイルを使用して、SSL 経由で LDAP に接続したいと考えています。私は次のコードを使用しています:

    private DirContext ctxtDir = null;
    Attributes attributes = null;
    ldap_server_url = "ldaps://" + getLdapHostName() + ":"
            + getPort() + "/";
    ldap_base_dn = getBaseDn();
    ldap_user = getLogin();
    ldap_password = getPwd();
    ldap_trust_store_file = "C:\\truststore.jks";
    ldap_trust_store_pwd = getStoreJKSPwd();

    // Set the parameters
    env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, ldap_context_factory);
    env.put(Context.PROVIDER_URL, ldap_server_url);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, ldap_user);
    env.put(Context.SECURITY_CREDENTIALS, ldap_password);
    env.put(Context.SECURITY_PROTOCOL, "SSL");

    // Set SSL parameters for Ldaps connection
    System.setProperty("javax.net.ssl.trustStore", ldap_trust_store_file);
    System.setProperty("javax.net.ssl.trustStorePassword",
            ldap_trust_store_pwd);
            // Try to establish the connection
    try {
        // create initial context
        ctxtDir = new InitialDirContext(env);
        attributes = getLdapattributes(ldap_base_dn);
        if (null != attributes) {
            isAvailable = true;
        }
    } catch (Exception e) {
        isAvailable = false;

    }

問題は、トラストストア ファイルの場所を使用したくないことです。入力ストリーム (ファイル コンテンツ) を使用したいのですが、それを行う方法はありますか? SSLContext を使用して https 接続を無効にする場合などです。

4

1 に答える 1

0

Unbound LDAP SDKは最新の LDAP API として最適です。SSLSocketFactoryまた、 SSL 接続の確立も提供します。

TrustAllTrustManager manager = new TrustAllTrustManager();
        SSLUtil sslUtil = new SSLUtil(manager);
        SSLSocketFactory socketFactory;
        try {
            socketFactory = sslUtil.createSSLSocketFactory("TLSv1");
        }
        catch (GeneralSecurityException e) {
            throw new LDAPException(ResultCode.CANCELED, "An error occured while creating SSL socket factory.");
        }

この socketFactory を次のように使用します。

new RoundRobinServerSet(addressesArray, portsArray, socketFactory);
于 2015-06-11T09:13:00.127 に答える