文章轉載自:https://mp.weixin.qq.com/s/iPfh9Mkwxf5lieiqt6ltxQ
服務器是命令行模式登錄,沒法以瀏覽器方式訪問。而官方推薦的快捷部署方式,在kibana 端提供的訪問方式如下:
i Kibana has not been configured.
Go to http://localhost:5601/?code=368039 to get started.
這個 localhost 針對的是雲服務器,在我們本機是搞不定的。
更進一步說,官方提供的快捷的部署方式,針對的是本機有瀏覽器可以訪問的場景,沒有或者鮮有考慮雲服務器部署情況。
最終還得回歸本源:自己搞安全的方式,不用官方自動生成的 CA 和 密鑰方式進行安全通信。
- 一方面:Elasticsearch 可控。
- 另一方面:與之安全通信的 Kibana 端 可用。

TLS tcp 加密通信設置
步驟1:先用默認的安裝方式搞定 Elasticsearrch 安全配置
這一步,保存一下 elastic 密碼,最后 kibana 訪問要用。
驗證機制:

步驟2:Elasticsearch 端改成自己生成CA 和 證書
參考:https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup.html
# 生成或創建認知中心。
./bin/elasticsearch-certutil ca
# 生成 TCP tls 加密通信的證書
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
步驟3:修改 elasticsearch.yml 的安全配置
設置:集群名稱(按照業務需求來)設置:節點名稱(按照業務需求來)設置:TLS 安全加密,參考如下:
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
注意:這和自動生成的是一樣的。改一下認證名稱就可以。
步驟4:將密碼存儲在密鑰庫(這一步是坑,必須過!!)
這一步貌似 7.X 沒有!
如果您在創建節點證書時輸入了密碼,請運行以下命令將密碼存儲在 Elasticsearch 密鑰庫中:
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
到這里,其實 TCP 安全通信部分配置完畢。
如果,此時啟動 Elasticsearch, 至少不會報 TLS 加密相關的錯誤了。
由於,沒有設置 Https,此時啟動會報 http.p12 相關的 https 認證的錯誤。
Https 加密通信設置
參考:https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup-https.html
這塊步驟非常多,直接按照官方文檔來,就沒有問題。
步驟1:生成 Http 的證書
./bin/elasticsearch-certutil http
步驟2:將生成的 zip 文件解壓縮為 elasticsearch 和 kibana 兩個文件夾。
zip 文件:elasticsearch-ssl-http.zip,解壓縮后截圖如下所示:

這兩個分別就是:ES 端 Https 的安全加密機制和 kibana與ES 端加密通信機制所需。
官方給出的 sample-elasticsearch.yml 和 sample-kibana.yml 暖暖的,很貼心。
步驟3:在elasticsarch 端配置生成的 http.p12 證書。
其實我們用默認之前生成的就可以。
只需要把新生成的證書拷貝到給定的 config/certs 路徑下面就可以。
步驟4:將密碼存儲在密鑰庫(這一步是坑,必須過!!)
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
到這里,其實 Elasticsearch 單獨啟動已沒有報錯了。
kibana 安全配置
其實:sample-kibana.yml 給出詳細說明。
與elasticsearch 端默認的Http通信要改成 Https

使用生成的證書
前提:證書拷貝到 config 路徑下面

需要配置非 elastic 管理員賬戶和密碼
注意:7.X 版本 可以使用 elastic 賬戶的,8.0 安全需要,已被禁用。
默認給出了 kibana_system 賬戶,密碼可以借助 reset_password 命令行工具實現。
./bin/elasticsearch-reset-password -u kibana_system
會自己幫我們生成密碼,拷貝一下即可。

然后改動配置,參考如下:

