首次启动 Elasticsearch 时,会为用户生成密码,并自动为用户配置 TLS ,可以随时调整 TLS 配置,更新节点证书
一、生成证书
1、在任意节点上进入 Elasticsearch 的安装目录,使用 elasticsearch-certutil 为集群生成 CA 。
bin/elasticsearch-certutil ca
(1)设置 CA 文件名(默认即可)
(2)为 CA 设置密码
2、利用上一步的 elastic-stack-ca.p12 为集群生成证书和私钥。
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
(1)输入CA的密码
(2)为证书创建密码,并设置文件名(默认即可)
3、将证书拷贝到其他节点上。
二、使用TLS加密节点间通信
1、进入 Elasticsearch 配置目录,编辑 elasticsearch.conf 文件:
cluster.name: my-cluster
node.name: node-1
xpack.security.enabled: true
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
2、执行以下命令将证书密码保存到 Elasticsearch 的 keystore
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
3、为集群中的每个节点完成前面的步骤。
4、在集群的每个节点上,重新启动 Elasticsearch 。
三、为 Elasticsearch 加密 HTTP 客户端通信
1、 在任意单个节点上,从安装 Elasticsearch 的目录中,运行Elasticsearch HTTP 证书工具生成证书签名请求(CSR)。
bin/elasticsearch-certutil http
(1)是否生成 CSR ,输入 n 。
(2)是否使用现有 CA ,输入 y 。
(3)输入 CA 的路径。这是 elastic-stack-ca.p12 的绝对路径。
(4)输入 CA 的密码。
(5)输入证书的有效期。
(6)是否为每个节点生成一个证书,输入 y 。
(7)输入每个节点的名称(node.name)。
(8)输入所有节点的主机名、IP地址。
(9)输入私钥密码。
该命令生成一个 .zip 文件,其中包含 Elasticsearch 和 Kibana 使用的证书和密钥。每个文件夹都包含一个 README.txt ,说明如何使用这些文件。
2、解压缩生成的 elasticsearch-ssl-http.zip 文件。这个压缩文件包含用于Elasticsearch和Kibana的目录。
/elasticsearch
|_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml
/kibana
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml
3、在集群中的每个节点上,完成以下步骤:
复制上面 elasticsearch 文件夹中的 http.p12 到 Elasticsearch 的配置目录下。
编辑 elasticsearch.yml ,启用 HTTPS 安全性,并指定 http.12 文件的位置。
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: http.p12
将私钥密码添加到 Elasticsearch 的安全设置中。
bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
4、重新启动 Elasticsearch