Я изо всех сил пытался заставить Start Tls работать на моем сервере ldap. Я настроил хранилище ключей и пароль в файле контекста spring. Моя конфигурация, кажется, работает для SSL, но Star Tls вызывает мурашки по коже. Я добавил StarTlsHandler в качестве ExtendedOperationHandler в оболочку моего сервера LDAP. Нужно ли мне настраивать что-то еще.
Я использую JDK 1.6.0_15.
Хранилище ключей и пароль на данный момент жестко закодированы, они кажутся нормальными, когда я использую SSL или отлаживаю.
Я использую клиент JLdap для проверки своей реализации.
Вот фрагмент кода, который я добавил для обработчика: ldapServer.setKeystoreFile("C:/jdk/dgekey.ks"); ldapServer.setCertificatePassword("секрет"); ldapServer.addExtendedOperationHandler (новый StartTlsHandler());
Ниже вы можете увидеть трассировку стека на стороне сервера, трассировка клиента находится ниже:
****Клиентская трассировка через javax.net.debug=all;****
keyStore: C:/jdk/cacerts Тип keyStore: jks Поставщик keyStore: init keystore init keymanager типа SunX509 trustStore: C:\jdk\cacerts trustStore Тип: jks trustStore Поставщик: init добавление хранилища доверенных сертификатов в качестве доверенного: Тема: 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 по центральноевропейскому летнему времени 2006 г., до субботы, 25 октября, 10:36:00 по центральноевропейскому летнему времени 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} Идентификатор сеанса: {} шифров: [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 ......... main, WRITE: TLSv1 Handshake, length = 73 [write] Хэши 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, ЗАПИСАТЬ: Приветственное сообщение клиента SSLv2, длина = 98 main, ЧТЕНИЕ: Предупреждение TLSv1, длина = 2 main, RECV TLSv1 ALERT: фатальный , handshake_failure main, называется closeSocket() main, обрабатывает исключение: javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure Ошибка: LDAPException: не удалось согласовать безопасное соединение (91) Ошибка подключения javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure
В настоящее время TlsHandler может только прочитать сертификат из записи uid=admin,ou=system. Можете ли вы попробовать после установки сертификата и ключей в соответствующие значения атрибутов записи администратора (uid=admin,ou=system). Я постараюсь исправить это в последнем транке. (Спасибо, если вы можете подать отчет об ошибке).