#java #elasticsearch #elk #elasticsearch-x-pack #xpack
#java #elasticsearch #elk #elasticsearch-x-pack #xpack
Вопрос:
Я пытаюсь безопасно подключиться к elastic search (7.8) через Java transport client. Я использовал x-pack для обеспечения подключения к elastic search. Я не могу создать объект Client из-за приведенной ниже ошибки.
2020-08-13 17:43:24 [main] DEBUG XPackSettings:199 - TLSv1.3 is not supported
java.security.NoSuchAlgorithmException: TLSv1.3 SSLContext not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159) ~[?:1.8.0_251]
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156) ~[?:1.8.0_251]
at org.elasticsearch.xpack.core.XPackSettings.<clinit>(XPackSettings.java:196) [x-pack-core-7.8.1.jar:7.8.1]
Я использую Java 1.8 и поддерживаю jars вместе с версией, указанной ниже.
elasticsearch-7.8.0.jar r
elasticsearch-cli-7.8.0.jar
elasticsearch-core-7.8.0.jar
elasticsearch-geo-7.8.0.jar
elasticsearch-nio-7.8.1.jar
elasticsearch-rest-client-7.8.1.jar
elasticsearch-secure-sm-7.8.0.jar
elasticsearch-ssl-config-7.8.1.jar
elasticsearch-x-content-7.8.0.jar
x-pack-core-7.8.1.jar
x-pack-transport-7.8.1-1.0.jar
Ниже приведен код подключения, который я использую для подключения к elastic search через транспортный порт 9300.
Client client = new PreBuiltXPackTransportClient(Settings.builder().put("cluster.name",esClusterName)
.put("node.name", esNodeName)
.put("xpack.security.transport.ssl.enabled", true)
.put("request.headers.X-Found-Cluster",esClusterName)
.put("xpack.security.user", elasticSerachCred)
.put("xpack.security.transport.ssl.key", elasticSearchSSLKeyLocation)
.put("xpack.security.transport.ssl.certificate", elasticSearchSSLCertificateLocation)
.put("client.transport.sniff", false)
.build()).addTransportAddress(new TransportAddress(InetAddress.getByName(transportServerName), transportPort));
ключ и сертификат elastic search я использую те же, которые я добавил в файл elasticsearch.yml для обеспечения безопасности.
Примечание: — Когда я запускаю этот код подключения без использования сервера tomcat, соединение работает отлично, но с сервером tomcat оно выдает эту ошибку.
Итак, я в замешательстве: либо мне нужно внести некоторые изменения на стороне tomcat, либо причиной этого является несоответствие версии elastic search, поддерживающей jars.
Кто-нибудь может помочь мне здесь?
Спасибо
Комментарии:
1. Какая у вас полная версия JDK?
2. Я использую jdk1.8.0_251
3. Первоначально выпущенная Java 8 (а также 9 и 10, но они сейчас не поддерживаются) не поддерживала TLSv1.3; она была добавлена всего несколько недель назад в 8u261
4. да, но тот же код подключения отлично работает с текущим JDK, когда я пытаюсь запустить без развертывания на сервере tomcat.