1

我正在尝试通过 Java 传输客户端安全地连接到弹性搜索(7.8)。我使用 x-pack 来保护弹性搜索连接。由于以下错误,我无法创建 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

我用来通过传输端口 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));

我使用的弹性搜索密钥和证书与我在 elasticsearch.yml 文件中添加的相同以启用安全性。

注意: - 当我在不通过 tomcat 服务器的情况下运行此连接代码时,连接工作正常,但使用 tomcat 服务器时会出现此错误。

所以,我很困惑,要么我需要在 tomcat 端做一些更改,要么是否有任何支持 jars 版本不匹配的弹性搜索导致这种情况。

有人可以在这里指导我吗?

谢谢

4

0 回答 0