elastic學習-本地kibana透過安全證書連線遠端elasticsearch

niewj發表於2023-01-06

1. 需要的證書檔案

1.1 前情提要

原因是阿里雲伺服器記憶體資源有限,實在是養不起kibana,所以只在阿里雲部署es,在本地計算機啟動一個kibana來連線;
當然也可以是elasticsearch-head或者elasticvue瀏覽器外掛的.

1.2 需要的3個檔案

kibana透過證書訪問遠端es需要這3個檔案:crt/csr/key
主要是本地kibana需要這三個配置, 所以後面生成這3個檔案之後, 要下載下來, 放到本地kibana/config目錄下,配置上全路徑:

elasticsearch.ssl.certificate: d:/xxx/kiana/config/kibana.crt
elasticsearch.ssl.key: d:/xxx/kiana/config/kibana.key
elasticsearch.ssl.certificateAuthorities: [ "d:/xxx/kiana/config/elasticsearch-ca.pem" ]

2. 證書的生成

  • csr/key/crt生成都需在es所在伺服器上!

2.1 生成csr/key證書

bin/elasticsearch-certutil csr -name kibana -dns myhost
#會在es的根目錄下生成 csr-bundle.zip 檔案, `unzip csr-bundle.zip`解壓開:
#會有2個檔案: 
  • kibana/kibana.csr
  • kibana/kibana.key

2.2 生成crt證書

openssl x509 -req -in kibana.csr -signkey kibana.key -out kibana.crt
# 會生成crt檔案:
  • kibana.crt

3. 本地kibana配置檔案

server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["https://myhost.com:9200"]

#不能使用elastic賬號,elastic賬號是管理員賬號
#可以透過`bin/elasticsearch-certutil -u kibana -i`自定義一對賬密
elasticsearch.username: "kibana"
elasticsearch.password: "mypassword"

#配置下面3個證書檔案(伺服器es上生成的crt/key/pem)
elasticsearch.ssl.verificationMode: none
elasticsearch.ssl.certificate: D:/_tmp/kibana-8.5.2/config/kibana.crt
elasticsearch.ssl.key: D:/_tmp/kibana-8.5.2/config/kibana.key
elasticsearch.ssl.certificateAuthorities: [ "D:/_tmp/kibana-8.5.2/config/elasticsearch-ca.pem" ]
上面就是本地kibana.yml的全部配置, 然後直接啟動即可連線.

4. 備註說明

  • 伺服器hostname=myhost
  • 伺服器域名=myhost.com
  • 如果還不行,可能還需要服務es支援cors,因為之前配置elasticvue和head外掛已經配置了,這裡沒寫,伺服器es主要配置如下:
cluster.name: my-cluster
node.name: node-1
path.data: /xxx/es-8.5.2/data
path.logs: /xxx/es-8.5.2/logs
# 設定網路訪問節點
network.host: myhost
# 設定網路訪問埠
http.port: 9200 
# 安全認證
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
# http的認證
xpack.security.http.ssl: 
  enabled: true
  keystore.path: /xxx/es-8.5.2/config/certs/http.p12
  truststore.path: /xxx/es-8.5.2/config/certs/http.p12
# 傳輸認證
xpack.security.transport.ssl: 
  enabled: true
  verification_mode: certificate
  keystore.path: /xxx/es-8.5.2/config/certs/elastic-certificates.p12
  truststore.path: /xxx/es-8.5.2/config/certs/elastic-certificates.p12
# 此處注意, node-1是上面配置的節點名稱
cluster.initial_master_nodes: ["node-1"]
http.host: [_local_, _site_]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none

#elasticvue/head/kibana
http.cors.enabled: true
http.cors.allow-origin: "*"

# elasticvue/head/kibana:
http.cors.allow-headers: X-Requested-With,Content-Type,Content-Length,Authorization

相關文章