Tomcat中的LDAP错误 - 需要TLS机密性

时间:2009-05-11 16:08:26

标签: tomcat ldap ssl

我正在尝试在Tomcat中配置Realm以访问具有TLS安全性的LDAP服务器。我的基本Realm配置如下所示:

    <Realm className="org.apache.catalina.realm.JNDIRealm" 
        debug="99"
        connectionURL="ldap://localhost:389/"
        userPattern="uid={0},ou=People,dc=nsdl,dc=org" />

我收到这样的错误:

SEVERE: Catalina.start: 
LifecycleException:  Exception opening directory server connection:  
    javax.naming.AuthenticationNotSupportedException: [LDAP: error code 13 - TLS confidentiality required]
    at org.apache.catalina.realm.JNDIRealm.start(JNDIRealm.java:1697)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1006)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

我尝试了各种修补程序,但没有更改问题或错误消息。这包括:

  • 将connectionURL中的协议更改为“ldaps”
  • 将connectionURL中的端口更改为636
  • 添加protocol =“TLS”他的领域
  • 将Realm声明从conf / server.xml(在主机或引擎下)移动到webapp中的META-INF / context.xml
  • 将ldap.jar添加到server / lib
  • 从Tomcat 5.5更改为Tomcat 6.0

其中每个都会产生相同的错误消息(尽管在某些配置中堆栈跟踪不同)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

答案实际上与此处发布的问题无关。问题与如何指定领域有关。

Realm是在位于META-INF / context.xml的webapp内的文件中包含的Context元素中指定的

我没有意识到的是那个

  • Tomcat将此文件复制到conf / Catalina / localhost / {webapp} .xml,
  • 如果为Tomcat提供了较新版本的WAR文件,则不会将{webapp} .xml替换为较新版本

因此每次发生相同错误消息的原因是因为我的Realm的初始副本很糟糕,我的尝试修复程序没有被考虑。

实际上,Realm规范是正确的,如上所示。一旦我清除了顽固的文件,它就运行良好。