首页 > Python资料 博客日记
Elasticsearch学习笔记(五)Elastic stack安全配置二
2024-10-12 12:00:09Python资料围观19次
一、手动配置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.csr
和kibana-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.crt
和kibana-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进行访问了。
转眼长假就要结束了:)
标签:
相关文章
最新发布
- manim边做边学--复数平面
- python 通过代码来控制窗口 并点击特定按钮
- wifi、热点密码破解 - python
- Python: 深入理解 subprocess.run() 执行命令、检查状态与结果处理
- Python 列表全方位解析:创建、操作、删除与遍历的全面指南
- Python 安卓应用构建教程:使用 Kivy 和 AndroidStudio(一)
- Python中类(class)的使用方法
- 【已解决】com.alibaba.excel.exception.ExcelGenerateException: java.lang.InternalError: java.lang.reflect.
- 097、Python 获取文件夹下的所有文件的方法
- 【Python知行篇】代码的曼妙乐章:探索数据与逻辑的和谐之舞
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj