You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将privekey.pem与fullchain.pem配置到Elasticsearch Docker容器以解决SSL问题

解决Elasticsearch容器SSL证书相关问题

1. 挂载证书到Elasticsearch容器

把你的privatekey.pem和fullchain.pem放到本地一个目录(比如./certs),然后在docker-compose.yml里给Elasticsearch服务添加挂载配置:

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.x
    volumes:
      # 映射本地证书到容器内的配置目录
      - ./certs/privatekey.pem:/usr/share/elasticsearch/config/certs/privatekey.pem
      - ./certs/fullchain.pem:/usr/share/elasticsearch/config/certs/fullchain.pem
    # 保留其他原有配置(端口、内存等)

2. 配置Elasticsearch启用自定义SSL证书

通过环境变量在docker-compose.yml里配置Elasticsearch使用你的证书(容器场景用环境变量比直接修改配置文件更便捷):

services:
  elasticsearch:
    # ... 其他配置
    environment:
      # 启用安全功能(必须开启才能正常使用SSL)
      - xpack.security.enabled=true
      # 开启HTTP和集群传输层的SSL
      - xpack.security.http.ssl.enabled=true
      - xpack.security.transport.ssl.enabled=true
      # 指定HTTP SSL的密钥和证书文件路径
      - xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/privatekey.pem
      - xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/fullchain.pem
      # 指定CA证书(如果fullchain包含根CA证书,直接用它即可)
      - xpack.security.http.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/fullchain.pem
      # 集群传输层SSL复用相同的证书配置
      - xpack.security.transport.ssl.key=/usr/share/elasticsearch/config/certs/privatekey.pem
      - xpack.security.transport.ssl.certificate=/usr/share/elasticsearch/config/certs/fullchain.pem
      - xpack.security.transport.ssl.certificate_authorities=/usr/share/elasticsearch/config/certs/fullchain.pem

3. 解决curl的SSL证书验证错误

执行curl请求时,有两种处理方式:

  • 信任自定义证书(生产环境推荐):
    curl --cacert ./certs/fullchain.pem https://elasticsearch:9200
    
  • 临时跳过验证(仅用于测试):
    curl -k https://elasticsearch:9200
    

4. 配置Kibana连接Elasticsearch

Kibana需要信任Elasticsearch的证书,同样挂载证书并配置环境变量:

services:
  kibana:
    image: docker.elastic.co/kibana/kibana:8.x
    volumes:
      - ./certs/fullchain.pem:/usr/share/kibana/config/certs/fullchain.pem
    environment:
      - ELASTICSEARCH_HOSTS=https://elasticsearch:9200
      # 指定Elasticsearch的CA证书,让Kibana信任其身份
      - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=/usr/share/kibana/config/certs/fullchain.pem
      # 如果Elasticsearch设置了账号密码,添加以下两个变量
      # - ELASTICSEARCH_USERNAME=elastic
      # - ELASTICSEARCH_PASSWORD=your_elastic_password
    # 其他配置(端口、内存等)

5. 重启容器并验证

修改完配置后重启容器:

docker-compose down && docker-compose up -d

验证Elasticsearch是否正常响应:

curl --cacert ./certs/fullchain.pem -u elastic:your_password https://elasticsearch:9200

同时检查Kibana的访问状态和日志,确认连接正常。

关于HTTP流量警告的说明

received plaintext http traffic on an https channel这个警告,是因为有客户端用http://访问了Elasticsearch的HTTPS端口(9200)。确保所有请求都用https://开头,包括Kibana的配置和你的curl命令,不要再用HTTP访问9200端口。

内容的提问来源于stack exchange,提问作者IDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:50:34