天天看點

EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

基于TLS實作ElasticSearch叢集加密通訊

作者:“發颠的小狼”,歡迎轉載

目錄

▪ 用途

▪ ES節點資訊

▪ Step1. 關閉服務

▪ Step2. 建立CA憑證

▪ Step3. 建立CERT證書

▪ Step4. 建立密鑰庫

▪ Step5. 删除CA憑證

▪ Step6. 修改elasticsearch.yml配置

▪ Step7. 啟動服務

▪ 附. 參考文檔

用途

前情提要:

▷ 在第一篇《EFK教程 - 快速入門指南》中,闡述了EFK的安裝部署,其中ElasticSearch的架構為三節點,即master、ingest、data角色同時部署在三台伺服器上。

▷ 在第二篇《EFK教程 - ElasticSearch高性能高可用架構》中,闡述了EFK的data/ingest/master角色的用途及分别部署三節點,在實作性能最大化的同時保障高可用。

▷ 在第三篇《EFK教程(3) - ElasticSearch冷熱資料分離》中,闡述了ES多執行個體部署,将不同熱度的資料存在不同的磁盤上,實作了資料冷熱分離、資源合理配置設定。

前三篇文章,ES叢集之間資料互動都是明文互動,而在本文中,為ES叢集建立CA、CERT證書,實作ElasticSearch叢集之間資料通過TLS進行雙向加密互動。

ES節點資訊

由于本文是基于上一篇文章《EFK教程(3) - ElasticSearch冷熱資料分離》為環境進行闡述,是以節點資訊和上一篇一緻:

EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

Step1. 關閉服務

首先,需要停止所有ElasticSearch、kibana、filebeat服務,待證書配置完成後再啟動

Step2. 建立CA憑證

1️⃣ 找任一一台ElasticSearch節點伺服器操作即可

cd /opt/elasticsearch/
# --days: 表示有效期多久
sudo -u elasticsearch ./bin/elasticsearch-certutil ca --days 3660           

2️⃣ 務必将生成的CA憑證,傳到安全地方永久存儲,因為後期若需要新增ES節點,還會用到該證書

EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

3️⃣ 請将elastic-stack-ca.p12證書傳到所有ES執行個體伺服器上

Step3. 建立CERT證書

按上面表格進入相對應的目錄建立CERT證書

# 在ES目錄中建立證書目錄及給予elasticsearch權限
mkdir -p config/certs;chown elasticsearch.elasticsearch config/certs -R

# 每一個執行個體一個證書
# --ca CA憑證的檔案名,必選參數
# --dns 伺服器名,多伺服器名用逗号隔開,可選參數
# --ip 伺服器IP,多IP用逗号隔開,可選參數
# --out 輸出到哪裡,可選參數
# --days 有效期多久,可選參數
sudo -u elasticsearch ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ip ${本機IP},127.0.0.1 --out config/certs/cert.p12 --days 3660
# 例如elasticsearch-master-1(192.168.1.31)執行指令:sudo -u elasticsearch ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ip 192.168.1.31,127.0.0.1 --out config/certs/cert.p12 --days 3660           
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

如果想批量生成CERT證書,請自行查閱附錄連結,不過批量生成有時會碰到生成的證書不可用,是以建議一台一台生成

Step4. 建立密鑰庫

按上面表格進入相對應的目錄建立密鑰庫

# 每一個執行個體都要操作
# 建立密鑰庫
sudo -u elasticsearch ./bin/elasticsearch-keystore create
# PKCS#12檔案的密碼
sudo -u elasticsearch ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
# 信任庫的密碼
sudo -u elasticsearch ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password           
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

确認keystore、truststore已錄入至密鑰庫

sudo -u elasticsearch ./bin/elasticsearch-keystore list           
EFK教程(4) - ElasticSearch叢集TLS加密通訊目錄用途ES節點資訊Step1. 關閉服務Step2. 建立CA憑證Step3. 建立CERT證書Step4. 建立密鑰庫Step5. 删除CA憑證Step6. 修改elasticsearch.yml配置Step7. 啟動服務附. 參考文檔

Step5. 删除CA憑證

由于上面建立的elastic-stack-ca.p12含有私鑰,是以為了安全,建議将該檔案删除(請務必提前備份好,因為後期增加節點還會用到)

按上面表格進入相對應的目錄删除CA憑證

rm -f elastic-stack-ca.p12           

Step6. 修改elasticsearch.yml配置

按上面表格對應的執行個體配置conf目錄下elasticsearch.yml

# 在所有執行個體上加上以下配置
# 開啟transport.ssl認證
xpack.security.transport.ssl.enabled: true
# xpack認證方式 full為主機或IP認證及證書認證,certificates為證書認證,不對主機和IP認證,預設為full
xpack.security.transport.ssl.verification_mode: full
# xpack包含私鑰和證書的PKCS#12檔案的路徑
xpack.security.transport.ssl.keystore.path: certs/cert.p12
# xpack包含要信任的證書的PKCS#12檔案的路徑
xpack.security.transport.ssl.truststore.path: certs/cert.p12           

Step7. 啟動服務

# 開啟所有ES執行個體
sudo -u elasticsearch ./bin/elasticsearch

# 開啟filebeat
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"

# 開啟kibana
sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml           

附. 參考文檔

https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.3/certutil.html           

繼續閱讀