一尘不染

SSL Elasticsearch

elasticsearch

我有一个es_client (java/dropwizard)申请。它通过纯文本连接与elasticsearch进行通信。我已按照https://github.com/sonian/elasticsearch-
jetty上的说明为设置SSL es client。但是,当我启动时,es_client它每5秒报告一次以下内容:

INFO [2014-01-08 23:02:14,814] org.elasticsearch.client.transport: [Karolina Dean] failed to get node info for [#transport#-1][inet[localhost/127.0.0.1:9443]], disconnecting... ! org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9443]][cluster/nodes/info] disconnected

我该如何解决这个问题?

谢谢,Maciej


阅读 264

收藏
2020-06-22

共1个答案

一尘不染

默认情况下,Elasticsearch在其传输层上不支持SSL,因此您必须添加自己。这需要在服务器端和客户端都使用新代码。

幸运的是,Elasticsearch的源代码非常模块化,因此只需在配置文件中添加一行即可很容易地换出传输实现。

不幸的是,Elasticsearch使用了许多私有字段和方法,这使得很难在不重新实现全部功能或复制/粘贴大量代码的情况下,向其现有实现中添加新功能。此外,Elasticsearch会遮蔽其Netty
-includes并跳过它们不使用的类,这意味着您必须自己从兼容的Netty版本中包含所需的SSL + helper类。

找到一个托管的Elasticsearch提供者,该提供者使用Java传输客户端提供了完全的SSL支持,并使用此开源插件完成了此任务,如果您决定自己实施,则可以将其用作启发。

另一种不同的方法是使用stunnel来处理计算机之间特定于SSL的部分,而不用对Elasticsearch本身做任何事情。

2020-06-22