Я пытаюсь подключиться к Elasticsearch с помощью Searchguard из приложения Spring Boot.
Я создаю компонент для 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.SSLHandshakeException: ошибка: 10000410: процедуры SSL: OPENSSL_internal: SSLV3_ALERT_HANDSHAKE_FAILURE
В чем может быть причина? Какую часть кода я должен проверить?
У меня есть другое приложение, которое напрямую использует ElasticsearchTemplate (только SearchQuery). И там у меня нет проблем.
Версия Elasticsearch: 6.4.3