SSL Elasticsearch

我有一个es_client (java/dropwizard)应用程序。 它通过纯文本连接与弹性搜索进行通信。 我按照https://github.com/sonian/elasticsearch-jetty上的说明为es client设置了SSL。 但是,当我启动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

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

幸运的是, Elasticsearch的源代码非常模块化 ,因此只需在配置文件中添加一行就可以轻松地交换传输实现。

不幸的是,Elasticsearch使用了许多私有字段和方法,这使得很难在现有实现中添加新function而无需重新实现它或复制/粘贴大量代码。 此外,Elasticsearch将他们的Netty -includes和跳过它们不使用的类隐藏起来,这意味着您必须自己从兼容的Netty版本中包含所需的SSL +帮助程序类。

发现,使用Java传输客户端提供完全SSL支持的托管Elasticsearch提供程序使用此开源插件执行此操作,如果您决定自己实现它,则可以将其用作灵感。

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