Конфигурация Elasticsearch Searchguard для Spring Boot

Я пытаюсь подключиться к Elasticsearch с помощью Searchguard из приложения Spring Boot.

Я создаю bean-компонент для TransportClient. Это выглядит так:

Settings settings = Settings.builder()
    .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_KEYSTORE_TYPE, "PKCS12")
    .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_KEYSTORE_FILEPATH, keyStore)
    .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_KEYSTORE_PASSWORD, keyPassword)
    .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_TRUSTSTORE_FILEPATH, trustStore)
    .put("cluster.name", clusterName)
    .build();

TransportClient client = new PreBuiltTransportClient(settings, SearchGuardPlugin.class);

TransportAddress[] addresses = clusterNodes.stream()
    .map(node -> {
         String[] url = StringUtils.deleteWhitespace(node).split(":");
         return new TransportAddress(new InetSocketAddress(url[0], Integer.parseInt(url[1])));
    }).toArray(TransportAddress[]::new);

client.addTransportAddresses(addresses);

У меня есть расширенный репозиторий ElasticsearchRepository.

Но я получаю странное исключение при запуске моего приложения:

ERROR com.floragunn.searchguard.ssl.transport.SearchGuardSSLNettyTransport - SSL Problem error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE javax.net.ssl.SSLHandshakeException: error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE

Что может быть причиной? Какую часть кода я должен проверить?

У меня есть другое приложение, которое напрямую использует ElasticsearchTemplate (только SearchQuery). И там у меня нет никаких проблем.

Версия эластичного поиска: 6.4.3

Откуда берутся keyStore и trustStore? Как вы их генерировали?

Val 26.06.2019 17:06

Они генерируются не мной. Но они хорошо работают в другом проекте.

Daria Pydorenko 27.06.2019 09:36

Какая проблема может быть с ними?

Daria Pydorenko 27.06.2019 09:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
263
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправлено, когда я установил searchguard.ssl.transport.enable_openssl_if_available значение false:

...
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_ENABLE_OPENSSL, false)
...

Другие вопросы по теме