ElasticSearch-7.17.24设置密码及CA证书

集群概览

主机名 系统 版本
es01 CentOS_7.6-aaarch64 ElasticSearch-7.17.24
es02 CentOS_7.6-aaarch64 ElasticSearch-7.17.24
es03 CentOS_7.6-aaarch64 ElasticSearch-7.17.24

需求

将ElasticSearch集群从开源版本升级为具备安全认证功能的版本(如X-Pack),为集群配置SSL/TLS加密并启用安全认证。

实施过程

生成证书

创建 CA 证书

首先,创建一个CA(Certificate Authority)证书,用于签发集群中的节点证书。执行以下命令:

bash 复制代码
su es
cd  /data/elasticsearch-7.17.24/bin
./elasticsearch-certutil ca

执行过程中会提示:

  • Please enter the desired output file [elastic-stack-ca.p12]: 直接回车,生成默认文件名 elastic-stack-ca.p12。
  • Enter password for elastic-stack-ca.p12: 密码可为空,直接回车。

生成的 elastic-stack-ca.p12 文件位于 Elasticsearch 根目录 /data/elasticsearch-7.17.24/ 下。

生成节点证书

使用生成的 CA 证书为集群节点创建证书,执行以下命令:

bash 复制代码
./elasticsearch-certutil cert --ca elastic-stack-ca.p12

执行过程中会提示:

  • Enter password for CA (elastic-stack-ca.p12): 输入之前CA文件的密码(如果无密码直接回车)。
  • Please enter the desired output file [elastic-certificates.p12]: 回车以使用默认文件名 elastic-certificates.p12。
  • Enter password for elastic-certificates.p12: 给新证书设置密码。

生成的 elastic-certificates.p12 文件位于相同目录下。

elastic-certificates.p12 文件生成时,我设置了密码,下面的配置将以带密码的形式给出,请注意。

拷贝证书到其他节点

将 elastic-stack-ca.p12 和 elastic-certificates.p12 先移动到/config下,再复制到集群其他2个节点的 /data/elasticsearch-7.17.24/config/下。

修改配置文件

在每个节点的 `elasticsearch.yml` 文件中,增加以下配置以启用 SSL/TLS 加密:

yaml 复制代码
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
xpack.security.transport.ssl.keystore.secure_password: ${keystore:pass}
xpack.security.transport.ssl.truststore.secure_password: ${keystore:pass}

其中以下两行是elastic-certificates.p12 文件密码。

yaml 复制代码
xpack.security.transport.ssl.keystore.secure_password: ${keystore:pass}
xpack.security.transport.ssl.truststore.secure_password: ${keystore:pass}

添加加密条目

以更加安全的方式管理密码,而不是直接将密码以明文形式放入 elasticsearch.yml 文件中,建议使用 elasticsearch-keystore 工具来加密存储密码。这种方式可以防止在配置文件中暴露敏感信息。

使用以下命令为 keystore 和 truststore 添加elastic-certificates.p12 文件加密密码条目:

plain 复制代码
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

执行后,系统会提示你输入 keystore 的密码(如 1QAZ2wsx3edc)。

接着,为 truststore 密码添加加密条目:

plain 复制代码
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

同样,系统会提示你输入 truststore 的密码。

重启 Elasticsearch 服务

将原有的 Elasticsearch 进程关闭并重启:

bash 复制代码
kill -9 <elasticsearch_pid>
./elasticsearch -d

此时重启后,再发送请求会让你输入密码,下面我们进行密码设置。

设置密码

在集群中的某台节点上为预定义的用户设置密码:

bash 复制代码
cd /data/elasticsearch-7.17.24/bin
./elasticsearch-setup-passwords interactive

执行过程中会提示为以下用户设置密码:

  • elastic
  • apm_system
  • kibana
  • logstash_system
  • beats_system
  • remote_monitoring_user

你可以为每个用户设置自己的密码,或者全部设置为相同密码。

验证配置

使用设置的密码登录 Elasticsearch,验证集群状态:

bash 复制代码
curl -u elastic:<password> 'http://192.168.0.111:19200/_cat/nodes?v'
curl -u elastic:<password> 'http://192.168.0.112:19200/_cat/nodes?v'
curl -u elastic:<password> 'http://192.168.0.113:19200/_cat/nodes?v'
curl -u elastic:<password> 'http://192.168.0.111:19200/_cat/health?v'

通过以上步骤,已成功为 Elasticsearch 集群配置了 SSL/TLS 加密与用户密码认证,在浏览器进入时会提示你输入账号和密码。

相关推荐
古法老登瞎折腾4 小时前
大数据智能运维实战(二):准备一个可复现的运维实验环境
java·大数据·运维·spring ai·mcp
数字新视界4 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
坐吃山猪5 小时前
ES08-ES使用IK分词器
大数据·elasticsearch·搜索引擎
泡干脆面就番茄5 小时前
Hive-DML:Load-Insert-Export-Import四种数据进出方式
大数据·数据仓库·hive·hadoop
加百力5 小时前
沪指险守3700点,券商、银行午后发力,创业板跌近3%,半导体尾盘反扑,恒科指跌3%,科网股普跌
大数据
eBest数字化转型方案6 小时前
快消渠道 AI 落地路线:拍照、数据、决策三阶段的工程逻辑
大数据·人工智能
百胜软件@百胜软件6 小时前
百胜软件黄飞:让AI真正走进零售,把不确定性变成“胜券在握”
大数据·人工智能·零售
4SAPI6 小时前
官方API、API聚合平台与自建LLM Gateway:三种方案怎么选
大数据·人工智能·gateway·php
ManageEngineITSM6 小时前
工单优先级怎么定?影响×紧急度矩阵的设计与落地方法
java·大数据·运维·前端·数据库·变更管理
智商网输送线配件6 小时前
电子制造零散耗材补货实战:小批量混批采购平台怎么选才不停机?
大数据·服务器·前端·数据库·自动化