LDAP查询在SSL上非常慢(Java - SpringFramework)

时间:2015-10-09 17:29:18

标签: spring ssl ldap

我们有一个Java(Spring Framework)的Web应用程序。对于身份验证和用户管理,我们使用SSO和LDAP。

LDAP上下文如下面的bean中所定义:

<bean id="legacyLdapContext" class="org.springframework.ldap.core.support.LdapContextSource">
   <property name="url" value="ldaps://aaa.bbb.ccc.edu:636"/>
    <property name="base" value="cn=Users,dc=bbb,dc=ccc,dc=edu"/>
    <property name="userDn" value="user"/>
    <property name="password" value="*****"/>
    <property name="pooled" value="true"/>
    <property name="baseEnvironmentProperties">
        <map>
            <entry>
                <key>
                    <value>java.naming.security.authentication</value>
                </key>
                <value>simple</value>
            </entry>
            <entry key="java.naming.referral">
                <value>ignore</value>
            </entry>
        </map>
    </property>
</bean>

一切正常,但连接/查询非常慢。 如果相同的配置更改为非ssl(`ldap://aaa.bbb.ccc.edu:389&#39;),它会快速闪亮。采用非SSL上下文几秒钟的查询将SSL上下文花费7分钟。

是否缺少与LDAPS相关的配置?我已使用此处http://javacolors.blogspot.in/2012/05/how-to-register-ssl-certificates-in.html中的步骤将证书安装到JVM。

1 个答案:

答案 0 :(得分:0)

要强制JVM汇集SSL连接,请将以下行添加到Apache Tomcat /bin/setenv.sh(Windows的{{setenv.bat}})文件

在Linux上:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.jndi.ldap.connect.pool.protocol='plain ssl' -Dcom.sun.jndi.ldap.connect.pool.authentication='none simple DIGEST-MD5'"

在Windows上:

JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jndi.ldap.connect.pool.protocol="plain ssl" -Dcom.sun.jndi.ldap.connect.pool.authentication="none simple DIGEST-MD5"

https://confluence.atlassian.com/display/CROWDKB/Performance+problem+when+using+LDAPS