【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. 部署完成!

相关推荐
低调之人27 分钟前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
x66ccff28 分钟前
HTTPS如何通过CA证书实现安全通信,以及HTTPS的局限性
网络协议·安全·https
Graceful_scenery36 分钟前
https双向认证
服务器·网络·网络协议·http·https
IT猿手6 小时前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
运维&陈同学6 小时前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
Y编程小白19 小时前
Git版本控制工具--基础命令和分支管理
大数据·git·elasticsearch
酱学编程1 天前
ES搜索原理
大数据·elasticsearch·搜索引擎
流穿1 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿1 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器