2017-08-13 13 views
0

私は現在Talend ESBコンテナのオーセンティケータとしてOpenLDAP 2.4.45のインスタンスを実行しています。私はTLSを使用してLDAPに接続しています。しかし、JMSブローカーを接続してorg.apache.activemq.jaas.LDAPLoginModuleを使用してLDAPを正常に使用できるように管理しましたが、org.apache.karaf.jaas私のオーセンティケータのためorg.apache.karaf.jaas.modules.ldap LDAPのSSLサポートを設定できません

2017-08-11 19:04:13,828 | WARN | qtp272427408-140 | LDAPLoginModule     | 126 - org.apache.karaf.jaas.modules - 4.0.8 | Can't connect to the LDAP server: Unable to setup SSL support for LDAP: null 
javax.naming.NamingException: Unable to setup SSL support for LDAP: null 
    at org.apache.karaf.jaas.modules.ldap.LDAPOptions.setupSsl(LDAPOptions.java:178) 
    at org.apache.karaf.jaas.modules.ldap.LDAPOptions.getEnv(LDAPOptions.java:158) 
    at org.apache.karaf.jaas.modules.ldap.LDAPCache.open(LDAPCache.java:113) 
    at org.apache.karaf.jaas.modules.ldap.LDAPCache.doGetUserDnAndNamespace(LDAPCache.java:151) 
    at org.apache.karaf.jaas.modules.ldap.LDAPCache.getUserDnAndNamespace(LDAPCache.java:142) 
    at org.apache.karaf.jaas.modules.ldap.LDAPLoginModule.doLogin(LDAPLoginModule.java:115) 
    at org.apache.karaf.jaas.modules.ldap.LDAPLoginModule.login(LDAPLoginModule.java:54) 
    at org.apache.karaf.jaas.boot.ProxyLoginModule.login(ProxyLoginModule.java:83)[org.apache.karaf.jaas.boot-4.0.8.jar:] 
    at sun.reflect.GeneratedMethodAccessor104.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_131] 
    at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)[:1.8.0_131] 
    at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)[:1.8.0_131] 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:587)[:1.8.0_131] 
    at org.apache.cxf.interceptor.security.JAASLoginInterceptor.handleMessage(JAASLoginInterceptor.java:141)[67:org.apache.cxf.cxf-core:3.1.10] 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)[67:org.apache.cxf.cxf-core:3.1.10] 
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[67:org.apache.cxf.cxf-core:3.1.10] 
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:262)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)[19:javax.servlet-api:3.1.0] 
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)[92:org.apache.cxf.cxf-rt-transports-http:3.1.10] 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[200:org.eclipse.jetty.servlet:9.2.19.v20160908] 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[200:org.eclipse.jetty.servlet:9.2.19.v20160908] 
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[223:org.ops4j.pax.web.pax-web-jetty:4.3.0] 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[198:org.eclipse.jetty.security:9.2.19.v20160908] 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[223:org.ops4j.pax.web.pax-web-jetty:4.3.0] 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[200:org.eclipse.jetty.servlet:9.2.19.v20160908] 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[223:org.ops4j.pax.web.pax-web-jetty:4.3.0] 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.Server.handle(Server.java:499)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[199:org.eclipse.jetty.server:9.2.19.v20160908] 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[191:org.eclipse.jetty.io:9.2.19.v20160908] 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[202:org.eclipse.jetty.util:9.2.19.v20160908] 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[202:org.eclipse.jetty.util:9.2.19.v20160908] 
    at java.lang.Thread.run(Thread.java:748)[:1.8.0_131] 

私の設定ファイル:Webサービスの.modules.ldap.LDAPLoginModuleは、私は、次のスタックトレースを取得し、ここで

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0" 
    xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"> 

<jaas:config name="KarafLdapConfiguration" rank="1"> 
    <jaas:module className="org.apache.karaf.jaas.modules.ldap.LDAPLoginModule" flags="required"> 
     connection.url=ldaps://ldap:4444 
     connection.username=uid=user,ou=users,dc=base 
     connection.password=password 
     authentication=simple 
     user.base.dn=ou=users,dc=base 
     user.filter=(uid=%u) 
     user.search.subtree=true 
     role.base.dn=ou=groups,dc=base 
     role.filter=(uniquemember=%fqdn) 
     role.name.attribute=uid 
     role.search.subtree=true 
     ssl=true 
     ssl.protocol=TLS 
     ssl.algorithm=PKIX 
     ssl.keystore=store 
     ssl.keyalias=myalias 
     ssl.truststore=trust 
    </jaas:module> 
    </jaas:config> 

    <jaas:keystore name="store" 
    path="file:///some/path/keystore.jks 
    keystorePassword="secret" 
    keyPasswords="secret" /> 

    <jaas:keystore name="trust" 
    path="file:///some/path/truststore.jks 
    keystorePassword="secret" /> 
</blueprint> 

私の疑惑は、私はSSLを欠けているということです。この構成ファイルのプロバイダオプション。ソースは何らかのURIを探しているように見えますが、これが期待していることについてのドキュメントは明確ではありません。私は検索にかなり時間を費やしましたが、CAサービスを提供する企業の外にあるものやSSLプロバイダーに関する情報を見つけることはできません。私はこれがどんなURIを探しているのか分かりません。私は失効チェックをしていないので、そうではありません。ここで何がうまくいかないのかについての考えはありますか?

答えて

1

私は数日前にこれを解決しましたが、今後誰にでも役立つ場合に備えて、その解決策を文書化します。

この問題は、設定ファイルのssl.providerフィールドが欠落していることが判明しました。何かを考え出した部分は、必要とされた実際のURIでした。初期の実験では、LDAPのベースDNがありませんでした。最終的には、フィールドには、私がいた

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
    xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0" 
    xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"> 

<jaas:config name="KarafLdapConfiguration" rank="1"> 
    <jaas:module className="org.apache.karaf.jaas.modules.ldap.LDAPLoginModule" flags="required"> 
     connection.url=ldaps://ldap:4444 
     connection.username=uid=user,ou=users,dc=base 
     connection.password=password 
     authentication=simple 
     user.base.dn=ou=users,dc=base 
     user.filter=(uid=%u) 
     user.search.subtree=true 
     role.base.dn=ou=groups,dc=base 
     role.filter=(uniquemember=%fqdn) 
     role.name.attribute=uid 
     role.search.subtree=true 
     ssl=true 
     ssl.protocol=TLS 
     ssl.algorithm=PKIX 
     ssl.provider=ldaps://ldap:4444/dc=baseDN 
     ssl.keystore=store 
     ssl.keyalias=myalias 
     ssl.truststore=trust 
    </jaas:module> 
    </jaas:config> 

    <jaas:keystore name="store" 
    path="file:///some/path/keystore.jks 
    keystorePassword="secret" 
    keyPasswords="secret" /> 

    <jaas:keystore name="trust" 
    path="file:///some/path/truststore.jks 
    keystorePassword="secret" /> 
</blueprint> 
になってしまったので、何

ssl.provider=ldaps://<somehostname>:<port>/<baseDN> 

のようになります。

関連する問題