Конфигурация 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.

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

ОШИБКА com.floragunn.searchguard.ssl.transport.SearchGuardSSLNettyTransport - Ошибка проблемы SSL: 10000410: подпрограммы SSL: OPENSSL_internal: SSLV3_ALERT_HANDSHAKE_FAILURE javax.net.ssl.SSERTLHandshakeException: подпрограммы SSLVSHandshake10: ошибки

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

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

Версия Elasticsearch: 6.4.3


person Daria Pydorenko    schedule 26.06.2019    source источник
comment
Откуда берутся keyStore и trustStore? Как вы их создали?   -  person Val    schedule 26.06.2019
comment
Они созданы не мной. Но они хорошо работают в другом проекте.   -  person Daria Pydorenko    schedule 27.06.2019
comment
Какая проблема может быть с ними?   -  person Daria Pydorenko    schedule 27.06.2019


Ответы (1)


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

...
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_ENABLE_OPENSSL, false)
...
person Daria Pydorenko    schedule 01.07.2019