参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.16/security-basic-setup-https.html
https://xie.infoq.cn/article/17e7e5de164cabc48fe4b7b90
官方网站给我们提供的例子是用 Kibana 的域名来创建一个 CSR,然后使用这个 CSR 到 CA 签署安全证书,这个 CA 可以是受信任的也可以是不受信任的,我们测试就使用不受信任的即可,其实 Elasticsearch 中提供了很多创建证书的命令行工具,对于安全连接来说完全够用而不需要使用比如 openssl 等其他工具了。
- 为 Kibana 服务器生成证书和私钥
elasticsearch-certutil cert --pem --name kibana-server --out certs.zip
- 生成的
certs.zip
包含了ca
和kibana-server
文件夹
./certs
├── ca
│ └── ca.crt
└── kibana-server
├── kibana-server.crt
└── kibana-server.key
- 将压缩包复制到主机并解压缩
docker cp es:/usr/share/elasticsearch/certs.zip /root/work/cert/
unzip certs.zip
- 修改 docker-compose.yml 文件
version: '2.2'
services:
es:
image: elasticsearch:7.14.1
container_name: es
environment:
- discovery.type=single-node
kibana:
image: kibana:7.14.1
container_name: kibana
environment:
- SERVER_NAME=kibana.localhost
- I18N_LOCALE=zh-CN
- ELASTICSEARCH_HOSTS=http://es:9200
- XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY="fhjskloppd678ehkdfdlliverpoolfcr"
#入站TLS请求
- SERVER_SSL_ENABLED=true
- SERVER_SSL_CERTIFICATE=config/kibana-server.crt
- SERVER_SSL_KEY=config/kibana-server.key
volumes:
- /root/work/cert/kibana-server/kibana-server.crt:/usr/share/kibana/config/kibana-server.crt
- /root/work/cert/kibana-server/kibana-server.key:/usr/share/kibana/config/kibana-server.key
ports:
- 5601:5601
depends_on:
- es
- 启动
docker-compose up -d
- https 访问 Kibana