为 Elasticsearch 多节点集群设置 TLS 安全通讯

分享
程序员 2024-9-26 15:57:19 83 0 来自 中国
涉及版本声明:

Linux: CentOS 7.9 64位
Jdk: 1.8.0_11
ElasticSearch: elasticsearch-7.16.2
下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-x86_64.rpm
Ik-Analysis: elasticsearch-analysis-ik-7.16.2
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
analysis-pinyin: elasticsearch-analysis-pinyin-7.16.2
下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
elasticsearch-head: elasticsearch-head5.0.0
下载地址:https://codeload.github.com/mobz/elasticsearch-head/tar.gz/refs/tags/v5.0.0
Elasticsearch与jdk版本对应关系

1.png
一、   安装情况准备

主机规划:
192.168.100.181  es01
192.168.100.182  es02
192.168.100.183  es03
设置:
2  VCPU、2G内存、20G硬盘
修改服务器名称:
hostnamectl set-hostname es01hostnamectl set-hostname es02hostnamectl set-hostname es03之前已经设置好了三节点集群,现在要给集群设置TLS安全通讯。
天生ca文件

在任一节点上使用elasticsearch-certutil为集群天生CA文件
cd /usr/share/elasticsearch/./bin/elasticsearch-certutil ca1、出现提示时,继承默认文件名,即elastic-stack-ca.p12。该文件包罗CA的公共证书和用于为每个节点签订证书的私钥。
2、输入你的CA暗码。如果不摆设到生产情况,您可以选择将暗码留空。
在此节点上为集群中的节点天生证书和私钥。包罗了elastic-stack-ca.p12,在上一步中天生的输出文件。
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12--ca 用于签订证书的CA文件的名称,默认文件名elastic-stack-ca.p12
1、输入你的CA的暗码,或按进入如果在上一步中没有设置。
2、为证书创建一个暗码,并继承默认文件名。
输出文件是一个名为elastic-certificates.p12。该文件包罗节点证书、节点密钥和CA证书。
3、将elastic-certificates.p12拷贝到每一节点的/etc/elasticsearch/目次下。
4、在每个节点上,给elastic-certificates.p12修改权限,让elasticsearch用户可以读取这个文件。
chmod  660 /etc/elasticsearch/elastic-certificates.p12使用TLS加密各节点间通讯

传输网络层用于集群中节点之间的内部通讯。启用安全功能时,必须使用TLS来确保节点之间的通讯是加密的。
现在已经天生了证书颁发机构和证书,现在更新您的集群以使用这些文件。
Elasticsearch监视全部设置为TLS相干节点设置值的文件,如证书、密钥、密钥库或信托库。如果您更新这些文件中的任何一个,比如当您的主机名改变大概您的证书到期时,Elasticsearch会重新加载它们。按照全局弹性搜刮确定的频率轮询文件是否有更改resource.reload.interval.high设置,默认为5秒。
1、在集群的全部节点上实行以下使用,
vim /etc/elasticsearch/elasticsearch.yml添加以下设置xpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificate #由于你正在使用相同的elastic-certificates.p12文件,将验证模式设置为证书:xpack.security.transport.ssl.client_authentication: requiredxpack.security.transport.ssl.keystore.path: elastic-certificates.p12xpack.security.transport.ssl.truststore.path: elastic-certificates.p12生存退却出;完备的设置文件egrep -v "^$|^#" /etc/elasticsearch/elasticsearch.yml cluster.name: my-elsnode.name: es01path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truexpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: requiredxpack.security.transport.ssl.keystore.path: elastic-certificates.p12xpack.security.transport.ssl.truststore.path: elastic-certificates.p12network.host: 0.0.0.0http.port: 9200http.cors.enabled: true    http.cors.allow-origin: "*"bootstrap.system_call_filter: falsediscovery.seed_hosts: ["192.168.100.181", "192.168.100.182","192.168.100.183"]cluster.initial_master_nodes: ["192.168.100.181", "192.168.100.182","192.168.100.183"]2、如果在创建节点证书时输入了暗码,须要运行以下命令将暗码存储在Elasticsearch密钥库中:
cd /usr/share/elasticsearch/# ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_passwordwarning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOMEFuture versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_11/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.Enter value for xpack.security.transport.ssl.keystore.secure_password: [root@es01 elasticsearch]# ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_passwordwarning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOMEFuture versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_11/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.Enter value for xpack.security.transport.ssl.truststore.secure_password: 在三个节点上都存储了证书暗码后,而且确认已经给/etc/elasticsearch/elastic-certificates.p12 授予660权限后。
须实行完备的集群重启。设置为使用TLS举行传输的节点无法与使用未加密传输毗连的节点通讯(反之亦然)。
启动elasticsearch服务
systemctl start elasticsearch.service然后开启账号暗码认证。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 22:35, Processed in 0.189641 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表