提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
es版本8.14.3
这次ES部署到了正式生产环境,需要解决单节问题,顺便开启https解决安全问题一步到位,特此记录,没看过上集兄弟的可以看看上集
【ELK】保姆级教程docker部署Elasticsearch+Kibana,必成
开始操作
1)配置使用自签名证书
注意:如果已有单节点es,想要将其转换升级为集群,必须要删除/data下的node数据,即清空data中的信息;配置证书仅在集群的第一台服务器node-01执行即可,其他服务器直接复制;elasticsearch生成证书有两种方式,elasticsearch-certgen 方式和elasticsearch-certutil方式,其中,
- 第一种方式如果以后新增节点导致证书得重新生成并放到es所有节点,
- 一般我们使用第2种;
-
docker ps 查看
-
进入容器
shelldocker exec -it es01 bash
-
调用elasticsearch-certutil接口
为 Elastic Stack 设置基本安全性 |Elasticsearch 指南 [8.17] |弹性的
shell# 本处采用通过的elasticsearch-certutil方式 cd /usr/share/elasticsearch # 签发ca证书:输入证书文件名、密码,一般我们直接回车就行,命令执行完后,会在~目录下生成一个ca证书:elastic-stack-ca.p12 ./bin/elasticsearch-certutil ca # 生成第二个证书文件:elastic-certifacates.p12 # 要求输入 CA 的密码,如果在上一步中未配置密码,直接按 Enter ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 将这个elastic-certifacates.p12 文件复制到config目录下 mkdir config/certs mv *.p12 config/certs
-
增加集群配置1:集群间通信TLS
shell[root@seeone bigdata]# cat es/es01/config/elasticsearch.yml # 新增集群名称 cluster.name: es-cluster node.name: es01 http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: true xpack.security.http.ssl: enabled: false # 增加以下几行 xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: required # 前面生成的文件 xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
-
增加集群配置2:加密es和浏览器的流量
为 Elastic Stack 设置基本安全性以及受保护的 HTTPS 流量 |Elasticsearch 指南 [8.17] |弹性的
shell# 按照官网流程 ./bin/elasticsearch-certutil http
docker 部署的话需要在f.步骤增加宿主机IP地址
shell# 最后会生成压缩文件,此压缩文件 包含 Elasticsearch 和 Kibana 的一个目录 /elasticsearch |_ README.txt |_ http.p12 |_ sample-elasticsearch.yml /kibana |_ README.txt |_ elasticsearch-ca.pem |_ sample-kibana.yml # 复制到对应目录 mv elasticsearch/es01/http.p12 config/certs # es增加配置 xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: http.p12 [root@seeone config]# cat elasticsearch.yml cluster.name: es-cluster node.name: es01 http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: true xpack.security.http.ssl: enabled: true keystore.path: certs/http.p12 xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: required xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
-
增加集群配置3:加密kibana和es之间的流量
shell# 将前面生成的这个文件elasticsearch-ca.pem 复制出来,然后在kibana.yml里面加个配置 elasticsearch.ssl.certificateAuthorities: $KBN_PATH_CONF/elasticsearch-ca.pem [root@seeone config]# cat kibana.yml server.name: kibana server.host: "0.0.0.0" elasticsearch.hosts: [ "https://192.168.56.57:19200" ] elasticsearch.ssl.certificateAuthorities: /usr/share/kibana/config/certs/elasticsearch-ca.pem elasticsearch.username: 'kibana_system' elasticsearch.password: 'Qianyue@2024' xpack.monitoring.ui.container.elasticsearch.enabled: true i18n.locale: "zh-CN"
打开网页验证一下
shell# 可能需要重新创建一下账号 curl -k -X PUT -u elastic:Qianyue@2024 "https://192.168.56.57:19200/_security/user/kibana_system/_password" -H 'Content-Type: application/json' -d'{"password": "Qianyue@2024"}'
-
增加集群配置4:加密kibana到浏览器之间的流量
shell# 为 Kibana 生成服务器证书和私钥。 ./bin/elasticsearch-certutil csr -name kibana-server -dns qianyue-kibana.com,www.qianyue-kibana.com # 可能还是要输入一个文件名 #------------------------------------------------------------------------- # ... # Please enter the desired output file [csr-bundle.zip]: //直接回车 # ... #------------------------------------------------------------------------- # 会得到文件csr-bundle.zip # 解压 elasticsearch@es01:~$ unzip csr-bundle.zip Archive: csr-bundle.zip creating: kibana-server/ inflating: kibana-server/kibana-server.csr inflating: kibana-server/kibana-server.key # 复制到指定位置 # 用命令创建CRT证书 openssl x509 -req -in kibana-server.csr -signkey kibana-server.key -out kibana-server.crt # kibana增加配置 [root@seeone config]# cat kibana.yml server.name: kibana server.host: "0.0.0.0" elasticsearch.hosts: [ "https://192.168.56.57:19200" ] elasticsearch.ssl.certificateAuthorities: /usr/share/kibana/config/certs/elasticsearch-ca.pem elasticsearch.username: 'kibana_system' elasticsearch.password: 'Qianyue@2024' # 增加3行 server.ssl.enabled: true server.ssl.certificate: /usr/share/kibana/config/certs/kibana-server.crt server.ssl.key: /usr/share/kibana/config/certs/kibana-server.key xpack.monitoring.ui.container.elasticsearch.enabled: true i18n.locale: "zh-CN"
-
浏览器验证
-
部署完成!