StartTls, проблема ApacheDS - PullRequest
0 голосов
/ 10 мая 2011

Я изо всех сил пытался заставить Start Tls работать на моем ldap-сервере.Я настроил хранилище ключей и пароль в весеннем контекстном файле.Кажется, моя конфигурация работает для SSL, но Star Tls вызывает мурашки по коже.Я добавил StarTlsHandler в качестве ExtendedOperationHandler в оболочку моего сервера LDAP.Нужно ли настраивать что-нибудь еще?

Я использую JDK 1.6.0_15

В настоящий момент жестко запрограммированы хранилище ключей и пароль, они кажутся нормальными, когда я использую SSL или отладку.

Я использую JLdap Clientчтобы проверить мою реализацию.

Вот фрагмент кода, который я добавил для обработчика: ldapServer.setKeystoreFile ("C: /jdk/dgekey.ks");ldapServer.setCertificatePassword ( "секрет");ldapServer.addExtendedOperationHandler (new StartTlsHandler ());

Ниже вы можете увидеть трассировку стека на стороне сервера, трассировка клиента еще ниже:

2011-05-10 12: 51: 29,345 [rThread-4861-21] DEBUG [org.apache.directory.server.ldap.handlers.extended.StartTlsHandler] Настройка службы LDAP 2011-05-10 12: 51: 29,345 [rThread-4861-21] DEBUG [org.apache.directory.server.ldap.handlers.extended.StartTlsHandler] provider = SUN версия 1.6 2011-05-10 12: 58: 31,029 [rThread-4861-21] ОШИБКА [org.apache.directory.server.core.security.CoreKeyStoreSpi]ERR_68 Ошибка при попытке извлечь ключ.java.lang.IllegalStateException: ERR_436 Имена, используемые для принципалов, должны быть нормализованы!в org.apache.directory.server.core.LdapPrincipal. (LdapPrincipal.java:76) в org.apache.directory.server.core.security.CoreKeyStoreSpi.getTlsEntry (CoreKeyStoreSpi.java:84) в org.apache.irectserver.core.security.CoreKeyStoreSpi.engineGetKey (CoreKeyStoreSpi.java:231) в java.security.KeyStore.getKey (KeyStore.java:763) в com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl. SunX.: 113) в com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl $ SunX509.engineInit (KeyManagerFactoryImpl.java:48) в javax.net.ssl.KeyManagerFactory.init (KeyManagerFactory.java:239) в org.ap.directory.server.ldap.handlers.extended.StartTlsHandler.setLdapServer (StartTlsHandler.java:170) в org.apache.directory.server.ldap.LdapServer.startNetwork (LdapServer.java:542) в org.apache.directory.ldap.LdapServer.start (LdapServer.java:446) в com..ldap.apacheds.LdapServerWrapper.afterPropertiesSet (LdapServerWrapper.java:103) в org.springframework.beans.factory.support.AbapaAtobleBeanFactory.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.Bbbeans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:pr.getBean (AbstractBeanFactory.java:190) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:574) в org.springframework.context.support..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) в org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4655) в org.apache.catalina.core.StandardContext.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) в 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) на com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent (AdminEventMulticaster.java:182) в 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) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at 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) at sun.reflect.GeneratedMethodAccessor15.invoke (неизвестный источник) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) на com.sun.enterprise.admin.util.proxy.ProxyClass.invoke (ProxyClass.java:90) на $ Proxy1.invoke (неизвестный источник) на com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke (SunoneInterceptor.java:304) в com.sun.enterprise.interceptor.DynamicInterceptor.invoke (DynamicInterceptor.java:170) на com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call (InvokeCaller.java:69)в com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle (MBeanServerRequestHandler.java:155) в 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) в org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:593) на com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:94) в com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke (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.invoke (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) на com.sun.enterprise.web.connector.grizzly.TaskBase.run (TaskBase.java:264) на com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run (WorkerThreadImpl.java:117)

* Трассировка клиента через javax.net.debug = все; *

хранилище ключей: C: / jdk / cacerts Тип хранилища ключей: jks Поставщик keyStore является: хранилище ключей инициализации init keymanager типа SunX509 trustStore - это: C: \ jdk \ cacerts Тип доверенного хранилища: jks Поставщик trustStore - это: init truststore добавив в качестве доверенного сертификата: Тема: CN = SwissSign Platinum CA - G2, O = SwissSign AG, C = CH Эмитент: CN = SwissSign Platinum CA - G2, O = SwissSign AG, C = CH Алгоритм: RSA; Серийный номер: 0x4eb200670c035d4f Действительно с 25 октября 10:36:00 CEST 2006 до субботы 25 октября 10:36:00 CEST 2036

вызвать посев SecureRandom сделано посева SecureRandom %% Нет кэшированного сеанса клиента * ClientHello, TLSv1 RandomCookie: GMT: 1288255192 байта = {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} Идентификатор сессии: {}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] Методы сжатия: {0}


[запись] MD5 и SHA1 хэши: 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 ......... основной, НАПИСАТЬ: TLSv1 Рукопожатие, длина = 73 [запись] MD5 и 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 .. main, WRITE: приветственное сообщение клиента SSLv2, длина = 98 основной, ЧИТАЙТЕ: оповещение TLSv1, длина = 2 основной, RECV TLSv1 ALERT: смертельно, handshake_failure main, называется closeSocket () main, исключение обработки: javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure Ошибка: LDAPException: не удалось согласовать безопасное соединение (91) Ошибка подключения javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure

1 Ответ

1 голос
/ 11 мая 2011

В настоящее время TlsHandler может читать сертификат только из системной записи uid = admin, ou =.Можете ли вы попробовать после установки сертификата и ключей соответствующие значения атрибута записи администратора (uid = admin, ou = system).Я постараюсь исправить это в последнем сундуке.(Оцените, если вы можете подать отчет об ошибке).

...