es 开启x-pack后,kibana连接es的方式

本文用 .pem 格式的证书文件配置kibanaes通讯

1、执行下面的第一条命令生成根证书,一路回车!会得到elastic-stack-ca.p12
2、执行第二条命令,一路回车!会得到节点 kibana 的节点证书 kibana.p12
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns kibana --name kibana
第一条命令:bin/elasticsearch-certutil ca
第二条命令:bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns kibana --name kibana

即: kibana.p12 为 kibana 的证书,我们指定了 他的 dns 为 kibana
kibana 不能够直接使用 PKCS#12类型的证书!
kibana 不能够直接使用 PKCS#12类型的证书!
kibana 不能够直接使用 PKCS#12类型的证书!

所以我们需要 第三种命令,从 kibana.p12 的证书中提取 pem证书

openssl pkcs12 -in kibana.p12 -clcerts -nokeys -chain -out ca.pem
执行后会得到kibana使用的pem证书,名为 ca.pem

用下面的命令 从 elastic-stack-ca.p12 中分离出 kibana节点的key 和 crt,执行以下命令:

bin/elasticsearch-certutil cert --pem -ca elastic-stack-ca.p12 --dns kibana

得到 certificate-bundle.zip,解压后得到 kibana节点的 key和 crt,就是下面配置中的 instance.key 和 instance.crt

kibana.yml

server.port: 5601
server.host: "xxx.xxx.xxx.123"
server.name: "kibana"
#kibana访问es集群
elasticsearch.hosts: ["https://xxx.xxx.xxx.123:9200","https://xxx.xxx.xxx.123:9201","https://xxx.xxx.xxx.123:9202"]
elasticsearch.username: "kibana"
elasticsearch.password: "kibanaPassword"
i18n.locale: "zh-CN"
kibana.index: ".kibana"
#用HTTPS方式访问kibana
server.ssl.enabled: true
server.ssl.certificate: /opt/kibana-6.8.0-linux-x86_64/config/xp/instance/instance.crt
server.ssl.key: /opt/kibana-6.8.0-linux-x86_64/config/xp/instance/instance.key
#kibana访问es集群
elasticsearch.ssl.verificationMode: certificate
#注意 这里 用 ca.pem 证书   
elasticsearch.ssl.certificateAuthorities: ["/opt/kibana-6.8.0-linux-x86_64/config/xp/ca.pem"]
xpack.reporting.encryptionKey: "something_at_least_32_characters"

启动 kibana

总结:
kibana中用哪种一种证书去与es通讯,取决于 es集群用的是哪种证书:es集群 如果是用 .p12 格式的证书去配置的 keystore 、truststore,那么 kibana 用 .pem 证书;如果es集群用的是 .key 和 .crt 格式的证书 去开启的x-pack,那么 kibana 用 .crt 证书 去做 elasticsearch.ssl.certificateAuthorities 的配置。

你可能感兴趣的:(x-pack,ssl)