2011-05-10 2 views
0

J'ai eu du mal à faire en sorte que Start Tls fonctionne pour mon serveur ldap. J'ai configuré un keystore et un mot de passe dans un fichier de contexte printanier. Ma configuration semble fonctionner pour SSL mais Star Tls cause la chair de poule. J'ai ajouté StarTlsHandler en tant que ExtendedOperationHandler dans l'enveloppe de mon serveur LDAP. Dois-je configurer quoi que ce soit d'autre?StartTls, ApacheDS Problème

J'utilise 1.6.0_15 JDK

Keystore et mot de passe sont codés en dur pour le moment, ils semblent OK lorsque j'utilise SSL ou débogage. J'utilise JLdap Client pour tester mon implémentation.

Voici un extrait de code que j'ai ajouté pour Handler: ldapServer.setKeystoreFile ("C: /jdk/dgekey.ks"); ldapServer.setCertificatePassword ("secret"); ldapServer.addExtendedOperationHandler (new StartTlsHandler());

Ci-dessous, on peut voir la trace de pile sur le côté serveur, trace de client est plus bas:

10/05/2011 12: 51: 29.345 [rThread-4861-21] DEBUG [org.apache.directory. server.ldap.handlers.extended.StartTlsHandler] Définition du service LDAP 2011-05-10 12: 51: 29,345 [rThread-4861-21] DEBUG fournisseur [org.apache.directory.server.ldap.handlers.extended.StartTlsHandler] = SUN version 1.6 2011-05-10 12: 58: 31,029 [rThread-4861-21] ERREUR [org.apache.directory.server.core.security.CoreKeyStoreSpi] ERR_68 Échec lors de la tentative d'extraction de la clé. java.lang.IllegalStateException: ERR_436 Les noms utilisés pour les principaux doivent être normalisés! sur org.apache.directory.server.core.LdapPrincipal. (LdapPrincipal.java:76) sur org.apache.directory.server.core.security.CoreKeyStoreSpi.getTlsEntry (CoreKeyStoreSpi.java:84) at org.apache .directory.server.core.security.CoreKeyStoreSpi.engineGetKey (CoreKeyStoreSpi.java:231) à java.security.KeyStore.getKey (KeyStore.java:763) à com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl (SunX509KeyManagerImpl.java:113) at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl $ SunX509.engineInit (KeyManagerFactoryImpl.java:48) à l'adresse javax.net.ssl.KeyManagerFactory.init (KeyManagerFactory.java: 239) sur org.apache.directory.server.ldap.handlers.extended.StartTlsHandler.setLdapServer (StartTlsHandler.java:170) at org.apa che.directory.server.ldap.LdapServer.startNetwork (LdapServer.java:542) à org.apache.directory.server.ldap.LdapServer.start (LdapServer.java:446) à com..ldap.apacheds.LdapServerWrapper .afterPropertiesSet (LdapServerWrapper.java:103) à org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1469) à org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java : 1409) à org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) à org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:456) à org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:291) à org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) à org.springframework .beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190) at org.springframework.beans.factory.support .DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:574) à org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:895) à org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425) à org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:276) à org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:197) à org.springframework.web.context. ContextLoaderListener.contextInitialized (ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4655) at org.apache.catalina.core.StandardContex t.start (StandardContext.java:5364) à com.sun.enterprise.web.WebModule.start (WebModule.java:345) à org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:986) à org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:970) à org.apache.catalina.core.StandardHost.addChild (StandardHost.java:704) à com.sun.enterprise.web. WebContainer.loadWebModule (WebContainer.java:1649) à com.sun.enterprise.web.WebContainer.loadWebModule (WebContainer.java:1254) à com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed (WebModuleDeployEventListener.java:182) sur com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed (WebModuleDeployEventListener.java:278) à com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener (AdminEventMulticaster.java:1005) à com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent (AdminEventMulticaster.java:992) à com.sun. enterprise.admin.event.AdminEventMulticaster.processEvent (AdminEventMulticaster.java:470) à l'adresse com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent (AdminEventMulticaster.java:182) sur com.sun.enterprise.admin.server. core.DeploymentNotificationHelper.multicastEvent (DeploymentNotificationHelper.java:308) à com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent (DeploymentServiceUtils.java:231) à com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent (ServerDeploymentTarget.java:298) à com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase (ApplicationStartPhase.java:132) à com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase (DeploymentPhase.java:108) à com.sun. enterprise.deployment.phasing.PEDeploymentService.executePhases (PEDeploymentService.java:966) à com.sun.enterprise.deployment.phasing.PEDeploymentService.start (PEDeploymentService.java:609) à com.sun.enterprise.deployment.phasing. PEDeploymentService.start (PEDeploymentService.java:653) à com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start (ApplicationsConfigMBean.java:773) à sun.reflect.NativeMethodAccessorImpl.invoke0 (Méthode natif) à sun.reflect .NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) à java.lang.reflect.Method.invoke (Method.java:597) à com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean (MBeanHelper. java: 390) à com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean (MBeanHelper.java:373) à com.sun.enterprise.admin.config.BaseConfigMBean.invoke (BaseConfigMBean.java:477) à com. sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor.java:836) à com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer.java:761) à sun.reflect.GeneratedMethodAccessor15.invoke (Source inconnue) à sun.reflect.DelegatingMethodAccessorImpl.appelez (DelegatingMethodAccessorImpl.java:25) à java.lang.reflect.Method.invoke (Method.java:597) à com.sun.enterprise.admin.util.proxy.ProxyClass.invoke (ProxyClass.java:90) à $ Proxy1.invoke (source inconnue) à com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke (SunoneInterceptor.java:304) à com.sun.enterprise.interceptor.DynamicInterceptor.invoke (DynamicInterceptor.java:170) à l'adresse com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call (InvokeCaller.java:69) à l'adresse com.sun.enterprise.admin.jmx.remote.server. MBeanServerRequestHandler.handle (MBeanServerRequestHandler.java:155) at com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest (RemoteJmxConnectorServlet.java:122) à com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost (RemoteJmxConnectorServlet.java:193) à javax.servlet.http.HttpServlet.service (HttpServlet.java:754) à javax. servlet.http.HttpServlet.service (HttpServlet.java:847) à org.apache.catalina.core.ApplicationFilterChain.servletService (ApplicationFilterChain.java:427) à org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve. java: 315) à org.apache.catalina.core.StandardContextValve.invokeInternal (StandardContextValve.java:287) à org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:218) à org.apache. catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:648) à ou g.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:593) à com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:94) à com.sun.enterprise.web.PESessionLockingStandardPipeline. invoquer (PESessionLockingStandardPipeline.java:98) à org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:222) à org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:648) à org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:593) à org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:587) à org.apache.catalina.core.ContainerBase. invoquer (ContainerBase.java:1093) à org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:166) à org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:648) à org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:593) à org.apache.catalina.core. StandardPipeline.invoke (StandardPipeline.java:587) à org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:1093) à org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:291) à com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter (DefaultProcessorTask.java:666) à com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess (DefaultProcessorTask.java:597) à com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process (DefaultProcessorTask.java:872) à com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask (DefaultReadTask.java:341) à com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask (DefaultReadTask.java:263) à com .sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask (DefaultReadTask.java:214) at com.sun.enterprise.web.connector.grizzly.TaskBase.run (TaskBase.java:264) at com.sun .enterprise.web.connector.grizzly.WorkerThreadImpl.run (WorkerThreadImpl.java:117)

* Client Trace via javax.net.debug = tous; *

keyStore est: C:/jdk/cacerts Type keyStore est: JKS fournisseur keyStore est: initialisation keystore initialisation keymanager de type SunX509 trustStore est: C: \ Type jdk \ cacerts trustStore est : jks fournisseur trustStore est: initialisation truststore ajoutant comme cert confiance: Objet: CN = SwissSign Platinum CA - G2, O = SwissSign AG, C = CH Emetteur: CN = SwissSign Platinum CA - G2, O = SwissSign AG , C = CH Algorithme: RSA; Numéro de série: 0x4eb200670c035d4f Valable à partir du mercredi 25 octobre 10:36:00 CEST 2006 jusqu'au samedi 25 octobre 10:36:00 CEST 2036

semis de déclenchement de SecureRandom fait l'ensemencement SecureRandom %% Aucune session client mis en cache * ClientHello, TLSv1 AléatoireCookie: GMT: 1288255192 octets = {100, 146, 27, 29, 47, 10, 97, 247, 253, 145, 49, 147, 239, 157, 90, 4, 34, 15, 99 , 243, 191, 156, 251, 25, 64, 42, 210, 231} session ID: {} Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA] Méthodes de compression: {0}


[écriture] MD5 et SHA1 tables de hachage: len = 73 0000: 01 00 00 45 03 01 4D C9 37 D8 64 92 1B 1D 2F 0A ... E..M.7.d ... /. 0010: 61 F7 FD 91 31 93 EF 9D 5A 04 22 0F 63 F3 BF 9C a ... 1 ... Z. ". C ... 0020: FB 19 40 2A D2 E7 00 00 1E 00 04 00 05 00 2F 00 .. @........../ 0030: 33 00 32 00 0A 00 16 00 13 00 09 00 15 00 12 00 3.2 .......... 0040: 03 00 08 00 14 00 11 01 00 ......... principal, WRITE: TLSv1 Handshake, longueur = 73 [écriture] hachages MD5 et SHA1: len = 98 0000: 01 03 01 00 39 00 00 00 20 00 00 04 01 00 80 00 .... 9 ... ....... 0010: 00 05 00 00 2F 00 00 33 00 00 32 00 00 0A 07 00 ..../.. 3..2 ..... 0020: C0 00 00 16 00 00 13 00 00 09 06 00 40 00 00 15 ............ @ .. 0030: 00 00 12 00 00 03 02 00 80 00 00 08 00 00 14 00 ............... 0040: 00 11 4D C9 37 D8 64 92 1B 1D 2F 0A 61 F7 FD 91 ..M.7.d ... /. A ... 0050: 31 93 EF 9D 5A 04 22 0F 63 F3 BF 9C FB 19 40 2A 1 ... Z. ". C ..... @ 0060: D2 E7 .. principal, ECRIRE: SSLv2 client bonjour message, longueur = 98 principal, LIRE: Alerte TLSv1, longueur = 2 principale, RECV TLSv1 aLERTE: fatale, handshake_failure principale, appelée closesocket() principal, gestion des exceptions: javax.net.ssl.SSLHandshakeException: alerte fatale reçu: handshake_failure erreur: LdapException: Impossible de négocier une connexion sécurisée (91) Erreur de connexion javax.net.ssl.SSLHandshakeException: Alerte fatale reçue: handshake_failure

Répondre

1

Actuellement, TlsHandler peut uniquement lire le certificat depuis l'entrée uid = admin, ou = system. Pouvez-vous essayer après avoir défini votre certificat et vos clés sur les valeurs d'attribut appropriées de l'entrée admin (uid = admin, ou = system). Je vais essayer de résoudre ce problème dans le dernier coffre.(Appréciez si vous pouvez déposer un rapport de bogue).

+0

@kayyagri Merci pour votre aide. Où puis-je signaler ce bug, je n'ai pas trouvé de lien sur sitr ApacheDs http://directory.apache.org/apacheds/1.5/downloads.html Deuxièmement, comment puis-je résoudre rapidement ce problème car j'ai une date limite approche quelques jours –

+0

L'entrée uid = admin, ou = system a les attributs privateKey, publicKey et certificat remplacent les valeurs existantes par les clés et le certificat que vous avez (vous pouvez utiliser Apache Directory Studio pour le rendre plus facile). Vous pouvez signaler un problème ici [https://issues.apache.org/jira/browse/DIRSERVER] – kayyagari

+0

Salut à nouveau @kayyagri et merci pour la réponse, J'ai copié le certificat par défaut présent dans le serveur ApacheDs, généré un keystore à partir de ce certificat et chemin fourni de ce keystore vers mon fichier de contexte ldap/spring. Mais j'ai toujours la même erreur. Le certificat et le keystore qui fonctionnent avec des apacheDs autonomes ne fonctionnent pas lorsque je les utilise via mon implémentation ldap. Dois-je configurer autre chose aussi. –

Questions connexes