此篇记录Elasticsearch 8.x传输层的安全配置。
传输层节点间:
如果集群有多个节点,必须在节点间配置TLS。生产模式下,如果不启用TLS,集群将无法启动。
图片来源:Set up basic security for the Elastic Stack | Elasticsearch Guide [8.10] | Elastic
传输层依赖于TLS进行节点间的加密和认证。在节点之间配置 TLS 可以防止未授权的节点访问集群。
节点加入集群时,必须使用同一个CA签发的证书。
1、生成证书:
① ES启动前,在任意一个节点上使用elasticsearch-certutil工具为集群生成CA证书:
./bin/elasticsearch-certutil ca
a. 出现提示时,接受默认的文件名:elastic-stack-ca.p12,这个文件包含CA的公用证书和用于给每个节点签发证书的私钥;
b. 为CA设置密码,如果不在生产环境下密码可以置空。建议设置。
② 在任意节点上,为集群中的节点生成一个证书和私钥,使用①中生成的elastic-stack-ca.p12。
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
a.输入CA密码,如果①中密码置空直接按【Enter】键;
b.为证书设置密码,并接受默认的文件名:elastic-certificates.p12,这个文件包含了一个节点证书,节点密钥和CA证书。
③ 在集群中每个节点上,将elastic-certificates.p12文件拷贝到/usr/local/elasticsearch-8.10.2/config/目录下。
(2)节点间使用TLS加密通信:
在集群中每个节点上进行以下操作:
① 编辑/usr/local/elasticsearch-8.10.2/config/elasticsearch.yml文件:
在BEGIN SECURITY AUTO CONFIGURATION模块找到# Enable encryption and mutual authentication between cluster nodes部分,进行以下设置:
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: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
② 如果创建节点证书时设置了密码,执行以下命令在ES keystore中存储密码:
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
③ 在集群中每个节点上执行①②操作;
④ 在每个节点上启动ES。
./bin/elasticsearch
后台启动:
./bin/elasticsearch -d