收到“不支持TLSv1.3”的错误,在使用Java传输客户端连接到Elasticsearch时。

huangapple 未分类评论73阅读模式
英文:

Getting "TLSv1.3 is not supported" error while connecting to elastic search using Java Transport Client

问题

我正在尝试通过Java传输客户端安全地连接到Elasticsearch(7.8)。我已经使用x-pack来保护Elasticsearch的连接。由于下面的错误,我无法创建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以及以下版本的支持jar包。

  • elasticsearch-7.8.0.jar
  • 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连接到Elasticsearch的连接代码如下。

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方面进行一些更改,还是由于Elasticsearch支持jar包版本不匹配而引起的。

有人能在这里指导我吗?

谢谢。

英文:

I am trying to connect to elastic search (7.8) securely through Java transport client. I have used x-pack to secure elastic search connectivity. I am not able to create an object of Client due to below error.

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.&lt;clinit&gt;(XPackSettings.java:196) [x-pack-core-7.8.1.jar:7.8.1]

I am using Java 1.8 and supporting jars along with version listed below.

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

Connection code that I am using to connect to elastic search through transport port 9300 are below.

Client client = new PreBuiltXPackTransportClient(Settings.builder().put(&quot;cluster.name&quot;,esClusterName)
                .put(&quot;node.name&quot;, esNodeName)
                .put(&quot;xpack.security.transport.ssl.enabled&quot;, true)
                .put(&quot;request.headers.X-Found-Cluster&quot;,esClusterName)
                .put(&quot;xpack.security.user&quot;, elasticSerachCred)
                .put(&quot;xpack.security.transport.ssl.key&quot;, elasticSearchSSLKeyLocation)
                .put(&quot;xpack.security.transport.ssl.certificate&quot;, elasticSearchSSLCertificateLocation)
                .put(&quot;client.transport.sniff&quot;, false)
                .build()).addTransportAddress(new TransportAddress(InetAddress.getByName(transportServerName), transportPort));

elastic search key and certificate I am using same which I have added in elasticsearch.yml file to enable security.

Note:- When I am running this connection code without through tomcat server, connection is working perfectly fine but with tomcat server it is giving this error.

So, I am confuse either I need to do some changes in tomcat side or Is there any elastic search supporting jars version mismatch causing this.

Can anyone guide me here?

Thanks

huangapple
  • 本文由 发表于 2020年8月14日 21:59:46
  • 转载请务必保留本文链接:https://java.coder-hub.com/63414249.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定