1. 问题背景与核心需求
最近在部署Elasticsearch集群时遇到一个典型需求:需要开启用户认证确保数据安全,但暂时不启用HTTPS加密传输。这种配置在内部开发环境或受信任网络中很常见——既保证了基础安全,又避免了证书管理的复杂度。
这个需求看似简单,但实际操作中会遇到几个关键问题:
- Elasticsearch的安全模块(x-pack)默认将认证与传输加密绑定
- 直接关闭SSL会导致认证功能不可用
- 需要找到正确的参数组合才能实现"仅认证不加密"
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 版本选择建议
推荐使用Elasticsearch 7.x及以上版本,较新的安全模块提供更灵活的配置:
bash复制# 查看版本号
curl -XGET 'localhost:9200'
注意:6.8版本虽然也支持该功能,但配置方式略有不同,本文以7.17为例
2.2 必要插件安装
确保已安装x-pack基础安全模块(默认包含):
bash复制bin/elasticsearch-plugin list | grep x-pack
3. 关键配置解析
3.1 认证体系配置
修改elasticsearch.yml核心参数:
yaml复制xpack.security.enabled: true
xpack.security.transport.ssl.enabled: false # 关键参数!
xpack.security.authc.accept_default_password: false
3.2 用户密码初始化
执行内置工具设置初始密码:
bash复制bin/elasticsearch-setup-passwords auto
实测技巧:生产环境建议使用
interactive模式而非auto
4. 服务端完整配置示例
4.1 最小化安全配置
yaml复制cluster.name: secure-cluster
network.host: 0.0.0.0
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: false
xpack.s
