elasticsearch安全通讯配置要点(es 8.5.1)
elasticsearch的安全通讯配置,官网文档说明比较零散,尤其是几种组件如kibana、fleetserver、各类agent、beat采用的处理方式都不一样,这里针对利用elasticsearch自带证书工具创建CA的方式,归集一下配置要点,希望能有所帮助。
一、基本知识
1、默认情况下,服务器将使用两个端口进行通讯,9300与9200:
9300,用于elasticsearch服务器集群内各服务器节点间的通讯。
9200,用于http通讯,各类restful客户端,例如kibana,浏览器直接访问、agent等等需要通过该端口与服务器连接。
2、如果首次使用yum或者rpm按装elasticsearch服务器,安装程序会自动进行安全配置,并生成几个安全配置需要的文件,如ca的keystore、用于http加密通讯的keystore(http.p12)等,这些最好保留下来,当然,你也可以用它提供的证书工具在后面自行创建。留意,如果不是首次安装,又希望系统再次自动生成安全配置,需要先把/var/lib/elasticsearch里的东西删除干净。
3、通过自动安全配置生成的几个文件会放在/usr/share/elasticsearch下:
elastic-stack-ca.p12 keystore文件,存储了ca的公共证书及用于签发其他证书的密钥。
transport.p12 包含了传输层密钥和证书,用于elasticsearch节点间加密通讯。
http.p12 这个keystore存储着http加密通讯需要的证书和密钥。
http_ca.crt 证书文件,用于集群内的http通讯加密。
二、配置要点(以下elasticsearch服务简称es服务器)
1、创建CA
(yum/rpm方式安装的es,其自带的工具都放在/usr/share/elasticsearch/bin里面。)
./elasticsearch-certutil ca
按提示操作即可,我这里选择了不改名字、不加密码。完成后该工具会在上一级文件夹(即/usr/share/elasticsearch)里生成elastic-stack-ca.p12文件。这个文件将用于签署其他证书,非常重要。
2、启用elasticsearch节点间加密通讯:
2.1、创建用于节点间加密的keystore
把上面的CA文件复制到需要加入集群的节点服务器,使用certutil工具生成节点keystore文件,如下:
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
按提示操作,为了方便,我没改默认文件名,但为了后面说明keystore工具的使用,我在这里添加了密码:abcdef
完成后生成keystore文件elastic-certificates.p12,里面包含了节点证书,节点密钥,以及CA的证书。
2.2、由于上面的文件加了密码,需要在本地的keystore里添加密码以便本节点elasticsearch进程可以读取,如下:
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
2.3、在/etc/elasticsearch文件夹里新建certs文件夹以方便后面对路径统一管理。把elastic-certificates.p12文件复制到每一个节点的certs目录。注意读取权限要分配给elasticsearch组(该组在yum/rpm方式安装时自动创建)。
2.4、在每一个节点上配置elasticsearch.yml文件
cluster.name: (集群名字,所有节点都要一致)
node.name: (节点名字 ,最好有规律方便自己记忆)
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p112
3、启用elasticsearch服务器上的http加密通讯
3.1、使用工具生成用于http加密通讯的p12及pem文件。
./bin/elasticsearch-certutil http 下面会有一堆问题,我按如下配置:
创建CSR: 否
使用已创建CA:是
CA文件路径:/usr/share/elasticsearch/elastic-stack-ca.p12
CA文件密码:无密码
设置证书过期时间:可以按年月日计算,例如10y为10年,10d为10天,10m为10个月。
是否为每个节点创建独立的证书:否 (使用同一个证书。)
录入需要使用证书的机器名 (可以多个)
录入需要使用证书的IP (可以多个)
设置证书密码:abcdef
以上完成后将生成一个zip压缩文件。
3.2、解压文件,生成一个文件夹,里面包含两个文件夹,elasticsearch文件夹包含http.p12及elasticsearch.yml的配置参考,kibana文件夹包含elasticsearch-ca.pem及kibana.yml的配置参考。把http.p12复制到certs文件中。
3.3、同样,把上面keystore文件的密码加入到keystore中,
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
3.4、修改elasticsearch.yml以支持http通讯加密
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
3.5、如果你没有记下内置的超级用户elastic的密码,这时可以重置一下它的密码:
./bin/elasticsearch-reset-password -u elastic
该工具会把重置密码显示在屏幕中,记下来。
3.6、此时,可以尝试在浏览器用https://你的elasticsearch服务器的地址:9200访问一下验证安全设置是否生效。
4、启用es服务器与kibana间的加密通讯
4.1、把上面的elasticsearch-ca.pem复制到kibana服务器。
4.2、修改kibana.yml
elasticsearch.ssl.certificateAuthorities: [ "文件路径/elasticsearch-ca.pem" ]
elasticsearch.ssl.verificationMode: certificate
4.3、重启kibana。
5、fleet server与es服务器的加密通讯
我的理解,fleet server实际上是一个agent,启用了特别的代理策略(fleet server policy)。在安装前,需要先准备几个加密通讯用到的文件,当然,你也可以使用--insecure参数跳过,但会带来一系列问题,因此,不建议使用--insecure参数。
5.1、fleet server加密通讯需要3个证书文件和一个密钥文件。你在kibana上添加fleet server时,可以在系统给出的脚本上看到,如下案例:
--certificate-authorities=<PATH_TO_CA> \ #用于连接到fleet server 的ca证书,即集群CA的证书。
--fleet-server-es-ca=<PATH_TO_ES_CERT> \ #用于连接到elasticsearch的证书,加密http通讯的证书。
--fleet-server-cert=<PATH_TO_FLEET_SERVER_CERT> \ # fleet server本身的证书,pem格式。
--fleet-server-cert-key=<PATH_TO_FLEET_SERVER_CERT_KEY> #fleet server本身的密钥。
5.1.1、这几个文件分别通过如下步骤创建:
A. 准备ca.crt及ca.key用于创建fleet-server-cert和fleet-server-cert-key:
openssl pkcs12 -in elastic-stack-ca.p12 -out ca.crt -clcerts -nokeys #生成ca.crt
openssl pkcs12 -in elastic-stack-ca.p12 -out ca.key -nocerts -nodes #生成ca.key
(ca.crt可直接用于参数--certificate-authorities=/路径/ca.crt)
B. 使用certutil工具生成fleet-server-cert和fleet-server-cert-key:
./bin/elasticsearch-certutil cert --name fleet-server --ca-cert 路径/ca.crt --ca-key 路径/ca.key
--dns 你的fleetserver服务器名字 --ip 你的fleetserver的IP --pem
完成后会生成一个zip压缩文件。解压该文件,得到fleet-server.crt和fleet-server.key
C. 生成参数 --fleet-server-es-ca所需文件,如前所述,实际上fleetserver一个特殊agent,因此它也是采用http与es服务器通讯,因此,我们要使用前面生成的keystore文件http.p12里面的证书:
openssl pkcs12 -in http.p12 -out elastic-ca.crt -clcerts -nokeys
生成elastic-ca.crt ,此文件用于通过https连接easticsearch服务器。
5.2、把上述文件复制到agent机器的某个路径,至此,安装fleet server所需的文件均已齐备,可以利用kibana界面提供的安装脚本进行安装了。
装完fleet server后,可能会出现agent状态正常,但是没有数据流传递到es服务器的现象,此时需要指定agent使用证书与es通讯,在kibana界面,fleet设置里编辑output,在“高级yaml编辑”加上
protocol: "https"
ssl:
certificate_authorities: "路径/agent用于与es服务器通讯的http证书"
verification_mode: "certificate"
或者,启用Fingerprint认证,在elasticsearch服务器上,获取http证书的fingerprint:
openssl x509 -in http_ca1.crt -sha256 -fingerprint | grep SHA256 | sed 's/://g'
获得后,在“高级yaml编辑”里,加上:
ssl.ca_trusted_fingerprint: 你的fingerprint。
这个方式比较简单些,不受证书文件路径格式限制,适合场合也多一点。
6、启用agent的加密通讯
与fleetserver类似,但只需要指定token(kibana上添加代理时会给出)和certificate_authorities即可,这里就略过了。建议注册到fleetserver,会简单很多。没必要使用standalone方式,那是自找麻烦,除非有很特殊的要求或者进行故障排查。
7、beat的加密通讯,这里以filebeat为例
把elastic-ca.crt复制到要安装beat的机器,正常安装beat后,修改filebeat.yml
output.elasticsearch:
hosts: ["https://你的es服务器IP:9200"]
protocol: "https"
ssl:
certificate_authorities: "路径/agent用于与es服务器通讯的http证书"
verification_mode: "certificate"
以上,参考了几篇官方文档:
elastic stack手工配置安全
filebeat配置SSL
elasticsearch安全通讯配置要点(es 8.5.1)相关推荐
- elasticsearch 第二篇(配置篇)
配置 在es启动之前可以通过设置启动命令行启动参数.环境变量.文件等方式优化和配置es进行参数 环境变量 名称 示例 说明 ES_MIN_MEM 256M 用于配置java进程分配的最小内存 ES_M ...
- ElasticSearch安装配置(es)
1.搭建配置es # 创建es容器 # es的端口 # 9200 走http协议端口 # 9300 代码层面tcp端口 docker run -di --name elasticsearch -p 9 ...
- ElasticSearch基础杂烩-配置-索引-优化
2019独角兽企业重金招聘Python工程师标准>>> ElasticSearch基础杂烩-配置-索引-优化 博客分类: java 前言 ElasticSearch是一个基于Luce ...
- Web基础配置篇(十二): Elasticsearch的安装配置及入门使用
Web基础配置篇(十二): Elasticsearch的安装配置及入门使用 一.概述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RE ...
- java读取ES配置生成ES管理类,获取ES连接
java读取ES配置生成ES管理类,获取ES连接 1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询, ...
- elasticsearch安装与配置介绍
基本概念 集群:一个或者多个elasticsearch节点组成的集合 索引:含有相同属性的文档集合,例如一个索引代表消费者数据,一个索引代表产品数据(相当于MySQL的database) 类型:索引可 ...
- Elasticsearch集群配置以及REST API使用
ES安装与启动 在官网下载压缩包,解压后直接运行bin目录下的.bat文件即可.下载地址戳这里. ES配置集群 Elasticsearch配置集群很简单,只要配置一个集群的 名称 ,ES就会自动寻找并 ...
- Elasticsearch 压测方案之 es rally 简介
rally文档:http://esrally.readthedocs.io/en/latest/quickstart.html 由于 Elasticsearch(后文简称es) 的简单易用及其在大数据 ...
- elasticsearch安装和配置,elasticsearch启动报错:can not run elasticsearch as root
elasticsearch安装和配置 elasticsearch启动报错:can not run elasticsearch as root elasticsearch启动报错:ERROR: [3] ...
最新文章
- 机器人 瓷砖墙面清洗_瓷砖铺贴注意事项有哪些?
- 微信小程序-自定义picker选择器
- zerodivisionerror什么意思python-Python 中的 else详解
- 报错:不是可以识别的内置函数名称
- Android零基础入门第83节:Activity间数据传递方法汇总
- leetcode-110:判断平衡二叉树 Java
- 【方便自己使用】KKT条件
- Node.js 教程第十四篇——Socket.io
- TCP SYN-Cookie背后的人和事
- AnyLogic 建立谢林模型
- 阿里云运行python_使用阿里云运行python
- Linux大实验 (图书管理系统)
- js实现兼容的本地化存储方案
- C++中bad_alloc类
- Pg extention pgcrypto
- 安卓程序报错: No package ID ff found for ID 0xffffffff.
- 来认识一下Ning!
- Mac Pro install peel
- linux c查看子进程,Linux 如何查看进程和控制进程
- 游戏开发新手入门之Windows编程
热门文章
- 时隔一年半,我,一个卑微的前端菜鸡,又来写面经了
- python适合开发游戏吗_【学习python小游戏代码,你就可以做python滑雪游戏了】- 环球网校...
- yyf的HTMLCSS学习历程
- 管理类联考笔试还是计算机考,cc三战失败者对管理类联考与GMAT考试的见解
- Flac是什么格式,flac文件怎么转换为wav格式
- html5在线俄罗斯方块,HTML5最新经典俄罗斯方块游戏插件
- 【渝粤题库】国家开放大学2021春2394内科护理学题目
- 福建农信 计算机 考试试题,2020福建农信社招聘考试模拟试题——计算机知识(13)...
- Unity ASE案例解析—Skybox Cubemap Extended(天空盒子三维贴图效果)
- 基础课程《沉积岩岩石学》及《构造地质学》笔记