Elasticsearch学习笔记(五)Elastic stack安全配置二

server/2024/10/18 19:24:59/

一、手动配置http层SSL

通过前面的配置,我们为集群传输层手动配置了TLS,集群内部节点之间的通信使用手动配置的证书进行加密,但是集群与外部客户端的http层目前还是使用的自动配置,集群中HTTP的通信目前仍然使用自动生成的证书http.p12,这同样具有一定的安全风险,接下来我们 要手动生成http证书。

1.生成http.p12证书

HTTP层的加密也是通过数字证书实现的,如果大家有过使用数字证书的经验这里应该非常容易理解。这里我们使用ES 自带的elasticsearch-certutil工具生成自定义的证书和密钥。

首先将elastic集群、kibana关闭,然后在任意一个节点上使用下面的命令生成http证书。

/usr/share/elasticsearch/bin/elasticsearch-certutil http

在提示是否生成CSR时,选择N。
在这里插入图片描述
在提示是否使用已经存在的CA时选择y。

在这里插入图片描述
输入elastic-statck-ca.p12文件的绝对路径:/usr/share/elasticsearch/elastic-stack-ca.p12

📓 elastic-stack-ca.p12就是在6.1步骤中生成的CA。
在这里插入图片描述
接着输入文件密码。

输入证书的有效期。
在这里插入图片描述
在这里插入图片描述
👿 每个节点证书都有自己的私钥,并将为特定的主机名或IP地址颁发。

在这里插入图片描述
📓 节点名称可以自定义,建议使用节点 的hostname.

接着输入第一个节点的hostname。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此第一个节点的证书就生成成功了。

继续生成第二个节点的证书,方法和步骤和生成第一个节点的相同,不在赘述,在生成节点证书时仔细阅读提示信息。

在这里插入图片描述
在这里插入图片描述
接着输入要生成的证书文件名,直接回车使用默认名称。
在这里插入图片描述

2.颁发证书

通过上面的操作,在/usr/share/elasticsearch目录下生成了elasticsearch-ssl-http.zip,解压这个文件就能得到各个节点的证书和密钥文件了。
在这里插入图片描述
http.p12复制到elasticsearch的配置目录(先将es.自动配置生成的http.p12备份一下)。

systemctl stop elasticsearch
mv /etc/elasticsearch/certs/http.p12 /etc/elasticsearch/certs/http.p12.old
cp /usr/share/elasticsearch/elasticsearch/node1/http.p12 /etc/elasticsearch/certs/

接着修改http.p12文件的属性。

chown root:elasticsearch /etc/elasticsearch/certs/http.p12
chmod 660 /etc/elasticsearch/certs/http.p12

在这里插入图片描述
分别将手动生成的node2.node3.的http.p12证书复制到各个节点对应的配置目录下,并修改文件属性,步骤和第一个节点的相同。

3.添加私钥密码到keystore

在生成http证书时,如果添加了文件保护密码还需要使用下面的命令将这个密码添加到keystore中。

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

在这里插入图片描述
集群中的每个节点都进行上面的操作。

4.重启集群

完成前面的操作后,重启集群,此时集群的HTTP层就使用我们手动配置的http证书进行加密了。

重启kibana此时你会发现kibana已经无法监控到集群状态了。
在这里插入图片描述

二、为Kibana加密HTTP客户端通信

在上一步生成http证书时,生成了一个elasticsearch-ssl-http.zip文件,这个文件解压后除了

elasticsearch还有一个kibana文件,在kibana文件夹中就包含了kibana与elastic通信的证书文件:elasticsearch-ca.pem。

elasticsearch-ca.pem复制到kibana的配置目录。

cp /usr/share/elasticsearch/kibana/elasticsearch-ca.pem /etc/kibana/

修改kibana的配置。

vim /etc/kibana/kibana.yml
elasticsearch.ssl.certificateAuthorities: [/etc/kibana/elasticsearch-ca.pem]

在这里插入图片描述
重启kibana,发现kibana已经正常了,说明目前kibana与ES集群之间的通信也启用了我们手动配置的数字证书,ES集群与其他组件之间的安全性得到了进一步的提升。但是细心的同学还是会发现我们浏览器访问kibana时目前还是使用的http协议,这个不是同样会形成Elastic stack的安全短板吗?接下来我们继续配置Elastic stack加密kibana与浏览器之间的通信。

三、加密kibana与浏览器之间的通信

1.为Kibana生成服务器证书和私钥

在node1上使用下面的命令为Kibana生成服务器证书和私钥。

/usr/share/elasticsearch/bin/elasticsearch-certutil csr -name kibana-server -dns example.com,www.example.com

在这里插入图片描述
这个命令将生成有一个通用名称(CN) kibana-server,一个SAN为example.com,另一个SAN为www.example.com的证书文件。

解压csr-bundle.zip会得到kibana-server.csrkibana-server.key
在这里插入图片描述

2.生成签名

发送kibana-server.csr向您的内部CA或受信任的CA请求进行签名,以获得已签名的证书。签名的文件可以是不同的格式,如kibana-server.crt。

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --pem -ca /usr/share/elasticsearch/elastic-stack-ca.p12 -name kibana-server

在这里插入图片描述

上述命令生成certificate-bundle.zip,解压这个文件,会提示是否覆盖kibana-server.key,选y.

unzip certificate-bundle.zip

在这里插入图片描述
kibana-server.crtkibana-server.key复制到kibana配置目录。

cp /usr/share/elasticsearch/kibana-server/kibana-server.crt /etc/kibana/
cp /usr/share/elasticsearch/kibana-server/kibana-server.key /etc/kibana/

在这里插入图片描述
⚠️ 不要照抄我的命令,根据自己的实际情况将证书文件复制到kibana的配置目录。

3.修改kibana配置

修改kibana.yml文件。

 vim /etc/kibana/kibana.yml
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/kibana-server.crt
server.ssl.key: /etc/kibana/kibana-server.key

在这里插入图片描述

配置文件中要使用绝对路径。

重启kibana,通过上面的操作此时kibana和ES以及kibana和浏览器之间已经全部启用SSL了,因此再访问kibana时就需要使用https://:5601进行访问了。

在这里插入图片描述

转眼长假就要结束了:)

在这里插入图片描述


http://www.ppmy.cn/server/130463.html

相关文章

RNN的理解

如果你不想使用 PyTorch 内置的 nn.RNN 模块,而是希望自己从头实现一个基础的 RNN 以更深入地理解其内部机制,你可以手动实现 RNN 的前向传播和反向传播。下面是一个详细的实现示例,包括中文注释说明。 手动实现基础 RNN 1. 基础 RNN 结构 …

C++,STL 028(24.10.11)

内容&#xff1a;利用sort排序算法来对deque容器进行排序。 代码&#xff1a; #include <iostream> #include <deque> #include <algorithm> // 标准算法头文件using namespace std;void printDeque(const deque<int> &d) {for (deque<int>…

主线程与各工作线程的分工

1. 主线程&#xff1a; 配置读取资源的申请 原子变量的初始化&#xff1a;_Atomic 变量&#xff0c;C11标准引入&#xff1b;其初始化非线程安全&#xff0c;要顺序执行设置工作线程的全局启动开关ON工作线程的创建退出前&#xff0c;设置工作线程的全局启动开关OFF&#xff0…

C/C++进阶(一)--内存管理

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏&#xff1a; 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…

[uni-app]小兔鲜-07订单+支付

订单模块 基本信息渲染 import type { OrderState } from /services/constants import type { AddressItem } from ./address import type { PageParams } from /types/global/** 获取预付订单 返回信息 */ export type OrderPreResult {/** 商品集合 [ 商品信息 ] */goods: …

【Python】操作列表

Python是一种功能强大的编程语言&#xff0c;它提供了丰富的操作列表的方法。列表是一种有序、可变的数据类型&#xff0c;可以存储任意类型的元素。下面是一些常用的操作列表的方法&#xff1a; 1. 创建列表&#xff1a;可以使用方括号 [] 或者 list() 函数来创建一个列表。例…

threejs-基础材质设置

一、介绍 主要内容&#xff1a;基础材质(贴图、高光、透明、环境、光照、环境遮蔽贴图) 主要属性&#xff1a; side: three.DoubleSide, //设置双面 color: 0xffffff, //颜色 map: texture, //纹理 transparent: true, // 透明度 aoMap: aoTexture, //ao贴图 aoMapIntensity: 1…

“探索端智能,加速大模型应用” 火山引擎边缘智能x扣子技术沙龙圆满落幕!

9月21日&#xff0c;火山引擎边缘智能扣子技术沙龙在上海圆满落地&#xff0c;沙龙以“探索端智能&#xff0c;加速大模型应用”为主题&#xff0c;边缘智能、扣子、地瓜机器人以及上海交通大学等多位重磅嘉宾出席&#xff0c;从多维视角探讨 AI、 AIoT、端侧大模型等技术与发展…