我尝试通过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);
我的存储库扩展了ElasticsearchRepository。
但是当我的应用启动时,我收到一个奇怪的异常:
ERROR 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
答案 0 :(得分:1)
已修复,当我将searchguard.ssl.transport.enable_openssl_if_available
设置为false时:
...
.put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_ENABLE_OPENSSL, false)
...