基于Docker为Elasticsearch 9.0.1和Kibana 9.0.1配置SSL证书 保姆教程

一、证书生成流程
‌1. 进入容器/bin目录 创建CA证书

# --pass 参数设置密码保护证书文件, “” 不设置 密码
# 生成elastic-stack-ca.p12文件
elasticsearch-certutil ca --pass "" --out /usr/share/elasticsearch/config/certs/elastic-stack-ca.p12

  1. 进入容器/bin目录 生成节点证书
# 生成elastic-certificates.p12文件
elasticsearch-certutil cert \
  --ca /usr/share/elasticsearch/config/certs/elastic-stack-ca.p12 \
  --ip 127.0.0.1,<容器IP> \ #可以有多个ip,逗号隔开
  --dns localhost,elasticsearch,kibana
  --out /usr/share/elasticsearch/config/certs/elastic-certificates.p12

  1. ‌部署证书文件‌ (本地单机单节点部署 可以忽略此步骤)
docker cp elasticsearch:/usr/share/elasticsearch/config/certs /Users/{yourhostname}/elasticsearch/config
chmod -R 644 /Users/{yourhostname}/elasticsearch/config/certs/

二、Elasticsearch配置
修改elasticsearch.yml:

xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12

三、Kibana配置
‌1. 从ES容器复制CA证书

docker cp elasticsearch:/usr/share/elasticsearch/config/certs/elastic-stack-ca.p12 /Users/{yourhostname}/kibana/config/

  1. 修改kibana.yml
elasticsearch.hosts: ["https://elasticsearch:9200"]
elasticsearch.ssl.certificateAuthorities: ["/usr/share/kibana/config/elastic-stack-ca.p12"]
server.ssl.enabled: true
server.ssl.certificate: /usr/share/kibana/config/elastic-certificates.p12

四、启动验证
1‌.重启服务

docker restart elasticsearch && sleep 20 && docker restart kibana

2.检查HTTPS访问

curl -u admin:admin123 https://localhost:9200

  1. ‌访问Kibana界面
    浏览器访问https://localhost:5601,需导入CA证书并信任连接
使用 Docker 部署全文检索服务(如 Elasticsearch)是一种高效、灵活的方式,能够快速搭建起完整的搜索系统。以下是详细的部署步骤配置说明: ### 3.1 创建自定义网络 在部署 Elasticsearch 之前,建议先创建一个自定义的 Docker 网络,以便后续部署其他组件(如 Kibana、Filebeat)时可以共享该网络。 ```bash docker network create elastic ``` ### 3.2 启动 Elasticsearch 容器 Elasticsearch 是全文检索的核心组件,可以通过 `docker run` 命令快速启动。以下是一个典型的单节点 Elasticsearch 容器启动命令: ```bash docker run -d \ --name es9 \ --network elastic \ -p 9200:9200 \ -p 9300:9300 \ --privileged \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ elasticsearch:9.0.1 ``` 该命令中: - `-d` 表示以后台模式运行容器; - `--name es9` 指定容器名称为 `es9`; - `--network elastic` 使用之前创建的自定义网络; - `-p 9200:9200` `-p 9300:9300` 分别映射 HTTP 集群通信端口; - `--privileged` 提供更高的权限支持,适用于开发环境; - `-e "discovery.type=single-node"` 表示以单节点模式启动; - `-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"` 设置 JVM 内存参数; - `elasticsearch:9.0.1` 指定使用的镜像版本 [^3]。 ### 3.3 验证 Elasticsearch 是否正常运行 启动后,可以通过以下命令查看容器状态: ```bash docker ps ``` 确认 `es9` 容器处于 `Up` 状态后,访问 `http://localhost:9200`,如果返回类似如下 JSON 响应,则表示 Elasticsearch 已成功启动: ```json { "name" : "es9", "cluster_name" : "docker-cluster", "cluster_uuid" : "abc123xyz", "version" : { "number" : "9.0.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "abc1234", "build_date" : "2023-10-01T00:00:00.000Z", "build_snapshot" : false, "lucene_version" : "9.4.2", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" } ``` ### 3.4 配置持久化存储(可选) 为了防止数据丢失,可以在启动容器时挂载本地目录作为数据卷: ```bash docker run -d \ --name es9 \ --network elastic \ -p 9200:9200 \ -p 9300:9300 \ --privileged \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -v /your/local/data:/usr/share/elasticsearch/data \ elasticsearch:9.0.1 ``` 其中 `-v /your/local/data:/usr/share/elasticsearch/data` 表示将宿主机的 `/your/local/data` 目录挂载到容器的数据目录中 。 ### 3.5 配置安全设置(可选) 对于生产环境,建议启用安全功能并配置用户认证。例如禁用安全功能的命令如下: ```bash docker run -d \ --name es02 \ --net elastic \ -p 9200:9200 \ -e discovery.type=single-node \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -e xpack.security.enabled=false \ -e cluster.routing.allocation.disk.threshold_enabled=false \ -it \ elasticsearch:8.3.3 ``` 上述命令中通过 `-e xpack.security.enabled=false` 显式禁用了安全功能 [^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值