有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Spring Boot的java Elasticsearch Searchguard配置

我试图通过Spring Boot应用程序中的Searchguard连接到Elasticsearch

我为TransportClient创建了一个bean。 看起来是这样的:

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);

我的存储库扩展了ElasticSearch存储库

但当我的应用程序启动时,我收到一个奇怪的异常:

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)。我没有任何问题

Elasticsearch版本:6.4.3


共 (1) 个答案

  1. # 1 楼答案

    修正了当我将searchguard.ssl.transport.enable_openssl_if_available设置为false时:

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