本内容只记载密码,不做其他描述,详细请参考8.12篇
elasticsearch.yml文件添加属性
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
命令为 elasticsearch-setup-passwords interactive
用户名:elastic 设置密码为123456
api key为:Qy1FcFQ1WUJRZlliMTZCRnhKYkI6V19QS1BjZ2FTU3k3aTZ2QkEtV3hxQQ==
kibana配置参考8.12.2
Elasticsearch 中未启用 API 密钥的解决方案
1. 启用安全特性与 API 密钥配置
-
修改
elasticsearch.yml文件
在配置文件中添加以下参数以启用安全认证和 API 密钥功能:yamlCopy Code xpack.security.enabled: true xpack.security.authc.api_key.enabled: true说明:
xpack.security.enabled:全局安全认证开关,必须开启12。xpack.security.authc.api_key.enabled:API 密钥功能专用开关12。
-
配置 TLS 加密(强制要求)
生产环境下需启用 TLS 加密,否则 API 密钥服务可能无法启动23:yamlCopy Code xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12说明:
- 若未生成证书文件
elastic-certificates.p12,需通过elasticsearch-certutil生成28。 - 证书文件需放置于
config/certs目录,权限设置为64478。
- 若未生成证书文件
2. 生成证书(如未配置)
-
执行证书生成命令
bashCopy Code ./bin/elasticsearch-certutil cert -out config/certs/elastic-certificates.p12 -pass ""说明:
-pass ""表示证书无密码,适用于测试环境;生产环境建议设置密码28。- 生成的证书需分发到集群所有节点的相同路径8。
3. 重启服务并验证
-
重启 Elasticsearch 集群
修改配置后需重启所有节点以使配置生效12。 -
验证 API 密钥功能
-
创建 API 密钥测试:
bashCopy Code curl -u elastic:密码 -X POST "https://localhost:9200/_security/api_key" \ -H "Content-Type: application/json" \ -d '{"name": "test-key", "expiration": "1d"}'若返回包含
id和api_key的 JSON 响应,表示功能已启用34。 -
检查错误日志:
若启动失败,检查日志中是否存在API keys are not enabled或证书权限错误27。
-
注意事项
-
证书一致性:集群所有节点需使用相同的证书文件,且路径配置一致8。
-
客户端适配:
- 客户端需使用 HTTPS 协议(如
https://localhost:9200)23。 - 调用 API 时需在请求头附加
Authorization: ApiKey {base64(id:api_key)}47。
- 客户端需使用 HTTPS 协议(如
-
许可证限制:
- Basic 许可证仅支持基础安全功能,若需高级特性(如角色描述符),需升级至 Platinum 或企业版13。
通过上述步骤可解决 Elasticsearch 中 API 密钥未启用的问题,并确保服务端与客户端的兼容性12。
API 密钥有效期如何设置?
Elasticsearch 中 API 密钥有哪些使用限制
Elasticsearch 7.17.28 中如何生成 API 密钥?
elastic search client
ElasticHD