【ELK】ES单节点升级为集群并开启https【亲测可用】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

es版本8.14.3

这次ES部署到了正式生产环境,需要解决单节问题,顺便开启https解决安全问题一步到位,特此记录,没看过上集兄弟的可以看看上集

【ELK】保姆级教程docker部署Elasticsearch+Kibana,必成

开始操作

1)配置使用自签名证书

注意:如果已有单节点es,想要将其转换升级为集群,必须要删除/data下的node数据,即清空data中的信息;配置证书仅在集群的第一台服务器node-01执行即可,其他服务器直接复制;elasticsearch生成证书有两种方式,elasticsearch-certgen 方式和elasticsearch-certutil方式,其中,

  • 第一种方式如果以后新增节点导致证书得重新生成并放到es所有节点,
  • 一般我们使用第2种;
  1. docker ps 查看

  2. 进入容器

    shell 复制代码
    docker exec -it es01 bash
  3. 调用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
  4. 增加集群配置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
  5. 增加集群配置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
  6. 增加集群配置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"}'
  7. 增加集群配置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"
  8. 浏览器验证

  9. 部署完成!

相关推荐
赖small强10 小时前
【ZeroRange WebRTC】KVS WebRTC 示例中的 HTTP 通信安全说明
https·webrtc·tls·aws sigv4·信道安全·时间与重放控制
L.EscaRC1 天前
ELK Stack核心原理与运用要点解析
elk
赖small强1 天前
【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Data Plane REST API 深度解析
https·webrtc·data plane rest·sigv4 签名
果壳~1 天前
【Java】使用国密2,3,4.仿照https 统一请求响应加解密
java·https
liliangcsdn1 天前
如何基于DSL脚本进行elasticsearch向量检索示例
大数据·elasticsearch·搜索引擎
hadage2331 天前
--- git 笔记 ---
笔记·git·elasticsearch
厨 神1 天前
11月10日ES本机
大数据·elasticsearch·搜索引擎
赖small强1 天前
【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Control Plane API 深度解析
https·webrtc·control plane
小二·1 天前
Elasticsearch 面试题精编(26题|含答案|分类整理)
java·大数据·elasticsearch
2501_916007472 天前
iOS性能调试工具终极指南,从系统底层到多端协同的全方位优化实践(2025版)
android·ios·小程序·https·uni-app·iphone·webview