Elasticsearch 8.x 集成 RAG 时 SSL 证书验证失败怎么配置

文章导读
Elasticsearch 8.x 默认开启安全配置,RAG 应用连接报错通常是因为客户端不信任服务端自签名证书。生产环境建议将服务端生成的 http_ca.crt 配置到客户端,开发环境可临时关闭验证但存在安全风险。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Elasticsearch 8.x 默认开启安全配置,RAG 应用连接报错通常是因为客户端不信任服务端自签名证书。生产环境建议将服务端生成的 http_ca.crt 配置到客户端,开发环境可临时关闭验证但存在安全风险。

先说结论:ES 8.x 强制启用 TLS,连接失败需明确选择信任 CA 或关闭验证,生产环境必须信任 CA。

  • 适合:使用 LangChain、LlamaIndex 或原生客户端连接 ES 8.x 集群的场景
  • 先准备:从 ES 服务器获取 http_ca.crt 文件或使用自定义证书
  • 验收:客户端能成功执行 search 请求且无 SSL 警告

命令速用版

from elasticsearch import Elasticsearch
es = Elasticsearch(
    "https://localhost:9200",
    ca_certs="/path/to/http_ca.crt",
    basic_auth=("elastic", "password")
)

为什么会这样

Elasticsearch 8.x 版本启动时默认生成自签名证书并启用 SSL/TLS 加密。

RAG 应用所在的客户端环境通常没有将 ES 生成的自签名 CA 加入系统信任 store,导致 SSL 握手阶段验证失败。这不是网络不通,而是身份信任链缺失。

分步处理

步骤 1:获取 CA 证书

在 Elasticsearch 服务器安装目录下找到 http_ca.crt 文件,默认路径通常在 config/certs/ 或启动日志中打印的路径。

步骤 2:传输证书

将 http_ca.crt 安全复制到运行 RAG 应用的服务器或容器内,确保证书文件权限受限。

步骤 3:配置客户端

在初始化 Elasticsearch 客户端时,指定 ca_certs 参数指向该证书文件路径。

Elasticsearch 8.x 集成 RAG 时 SSL 证书验证失败怎么配置

步骤 4:临时绕过(仅开发)

若无法获取证书,可在客户端配置中设置 verify_certs=False,但禁止在生产环境使用。

怎么验证是否生效

执行客户端 info 或 search 方法,观察是否抛出 SSLError 异常。

print(es.info())

若返回集群版本信息且无证书警告,表示配置生效。

常见坑

  • 证书路径填写错误,客户端读取不到文件导致报错
  • ES 重启后自签名证书可能变更,需重新同步 CA 证书
  • 容器化部署时忘记将 CA 证书挂载到容器内部

常见问题

问题

找不到 http_ca.crt 文件怎么办?

答案

查看 Elasticsearch 启动日志,初始启动时会打印 CA 证书生成路径。

问题

生产环境可以关闭 SSL 验证吗?

答案

不可以,关闭验证会导致通信被窃听或篡改,必须配置正式证书或信任自签名 CA。

参考来源

  • Elastic 官方文档 - Secure cluster connections: https://www.elastic.co/guide/en/elasticsearch/reference/current/security-feature.html
  • Elastic 官方文档 - Connecting to Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/connecting.html