前言
说起x-pack这个组件,不是什么新鲜的功能,其实在elasticsearch早期版本就已经有了,而且x-pack在功能对于elasticsearch的安全性来说也毋庸置疑,但是俗话说得好,一分钱难倒英雄汉,更何况花销的单位可能是数万甚至更多,所以早期在中国并没有被大规模普及,能用的要么是财大气粗的金融、银行以及运营商等重量级客户;要么是通过“其他渠道”偷偷使用的中小客户。“菜谱哥”可能注意到完全收费对于x-pack的发展起到了很大的制约,而且收入可能也没有预期那么理想,所以从elasticsearch 6.3版本以后,x-pack开始逐步开放免费功能。一石激起千层浪,凭借elasticsearch多年打下来的江山,x-pack的应用如雨后春笋般的席卷了elasticsearch圈,尤其是需要将elasticsearch的访问暴露在公网或者公有云的业务场景下。在此种场景下,作为elasticsearch重度用户的笔者的公司在做项目时,接触到用户的elasticsearch集群也五花八门,所以很多场景下,就会遇到连接了开启了x-pack的elasticsearch,所以本文的着眼点就是简单地讲解下x-pack设置elasticsearch访问保护以及相关的客户端代码适配的功能,其余的功能笔者也在学习,后续如果有成果的话,会及时分享
正文
进入正题,下面将从elasticsearch的服务端配置以及transport-client客户端的适配两个方面来讲解下适配的过程,最后再讲解下kibana相关的适配:
elasticsearch的服务端配置
生成证书
此处需要说明下,当前遇见过两种三类配置,可能还有其他的,这说明x-pack的认证还是很灵活的,但是带来的影响就是适配成本较高,尤其是刚接触一个自己不熟悉的客户的x-pack认证方式时候,如果这个认证方式还是小众的情况下,那就太酸爽了...
证书的类型分为PKCS#12格式(.p12)以及PEM格式(.crt或者.pem),生成方式如下:
- PKCS#12
进入elasticsearch的安装目录,执行下面的命令
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
执行之后查看文件生成结果,进入config目录查看:

找到对应的文件 ,生成成功。
如果要指定client端登录的具体信息,限制client不能随意连接elasticsearch,则可以通过生成一个yaml文件,并在生成p12文件时作为输入即可:
[root@node1 cert_blog]# vi config/instance.yml
# 将实例信息添加到 yml 文件
instances:
- name: 'node1'
dns: [ 'node1.elastic.test.com' ]
- name: "node2"
dns: [ 'node2.elastic.test.com' ]
- name: 'my-kibana'
dns: [ 'kibana.local' ]
- name: 'logstash'
dns: [ 'logstash.local' ]
生成证书的命令变为:
bin/elasticsearch-certutil cert -in config/instance.yml -out config/elastic-certificates.p12 -pass ""
本文暂时未限制client相关的信息,所以后续也会在此基础上进行适配,至此 PKCS#12格式的验证文件生成完毕。
- PEM
pem方式比较特殊,可以使用elasticsearch自带工具生成的crt文件进行校验,也可以使用openssl生成的pem文件进行校验,前一种方式使用的较多,后一种使用的相对较少。笔者遇到的客户现场就是后一种方式,网上资料很少,在填了无数坑之后才搞定的...
使用elasticsearch-certutil生成crt文件
执行下面的命令:
bin/elasticsearch-certutil ca --pem
结果如下:

命令执行之后会生成一个zip文件,需要手动指定zip文件的存放地址,我指定的是:/home/elastic/elastic-stack-ca.zip
解压该文件,得到ca文件夹,文件夹中有两个文件:

本文详细介绍了如何配置Elasticsearch的x-pack安全特性,包括生成PKCS#12和PEM格式的证书,以及设置服务端和客户端的SSL验证。此外,还涉及到Kibana的适配,强调了在不同验证模式下的客户端连接配置。文章以实际操作为例,展示了在遇到不常见验证方式时的解决办法。
最低0.47元/天 解锁文章
1430





