Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

众所周知,原生 Elasticsearch 默认开启的是 HTTP 明文接口,并且不开启认证或加密。如果要启用 TLS/SSL 加密和账号认证,通常需要额外配置一系列安全模块。

而在 EasySearch 中,官方通过 initialize.sh 初始化脚本,大大简化了这些安全配置,启动时就能自动生成证书并开启密码保护。不过在一些测试或开发环境中,我们可能希望临时使用 HTTP + 无密码 的简化方式来调试。

本文将从配置文件入手,逐步说明如何启用或关闭认证、如何从 HTTPS 切换回 HTTP,以及如何开放外网访问。

🛠 初始化启动信息与默认密码

当你执行 bin/initialize.sh 后,终端和 initialize.log 会输出初始化信息,其中包括自动生成的管理员账号密码,例如:

1
curl -ku admin:160824cab0b02193226e https://localhost:9200

默认情况下,服务已启用 HTTPS 与密码认证。


⚙ 修改配置文件:easysearch.yml

配置文件位于:

1
config/easysearch.yml

可以在此文件中自定义集群名称:

1
cluster.name: my-application

修改前访问效果如下:

1
curl -ku admin:160824cab0b02193226e http://localhost:9200
1
"cluster_name": "easysearch",

修改后再次访问:

1
curl -ku admin:160824cab0b02193226e http://localhost:9200
1
"cluster_name": "my-application",

🌐 开放外网访问(单节点部署)

如果你希望让其他设备或公网访问 EasySearch,可以添加以下参数:

1
2
3
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

此外,为了提高对 Elasticsearch 客户端的兼容性,建议添加:

1
elasticsearch.api_compatibility: true

🔒 控制 HTTPS 与密码认证

EasySearch 的安全配置由以下两个核心参数控制:

参数 作用
security.enabled 是否启用认证(账号密码)和 HTTPS 模块
security.ssl.http.enabled 是否启用 HTTPS(SSL/TLS 加密)

🔁 配置组合含义如下:

security.enabled security.ssl.http.enabled 效果
true true 默认配置,启用认证 + HTTPS(推荐)
true false 仅认证,无加密,使用明文 HTTP
false true 无认证,HTTPS 加密,仅适合特殊用途
false false 最开放,HTTP + 无密码,不推荐生产使用

你可以根据实际需求选择是否打开加密或认证,适配测试与生产环境。


📸 示例:启用 HTTP 且开启认证

如果你修改配置为 security.ssl.http.enabled: false,即可使用 HTTP,但仍要求输入用户名密码进行访问:

1
2
security.enabled: true
security.ssl.http.enabled: false

访问效果如下图所示:

image-20250425120123219


✅ 小结

场景 推荐配置
本地测试(不加密、无密码) security.enabled: false + security.ssl.http.enabled: false
本地测试(仅加认证) security.enabled: true + security.ssl.http.enabled: false
安全访问(默认) security.enabled: true + security.ssl.http.enabled: true
HTTPS 不认证 security.enabled: false + security.ssl.http.enabled: true

EasySearch 提供了灵活的配置方式,适合不同场景自由切换。对于开发者来说,理解这两个参数的作用,是快速上手运维的第一步。

提到认证,我们再看看如何修改密码,由于 Easysearch 默认新建了一个 admin 的用户,并且存在 config/security/user.yml 下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
# This is the internal user database create by initialize
# The hash value is a bcrypt hash and can be generated with hash_password.sh

_meta:
type: "user"
config_version: 2

# Define your internal users here

## Demo users
admin:
hash: "$2y$12$rmNDJxpQdRDb3F1dqk.uweSZqH3VAqeEpkP298vJ6QS99K80kbRoO"
reserved: true
external_roles:
- "admin"
description: "Admin user"

这个我们也可以使用 postman 开调用 API.http://localhost:9200/\_security/account

image-20250425124456187

1
2
3
4
5
6
7
8
9
10
11
12
13
import requests

url = "http://192.168.5.8:9200"

payload = {}
headers = {
'Authorization': 'Basic YWRtaW46MTYwODI0Y2FiMGIwMjE5MzIyNmU='
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

新建用户

查看接口:https://localhost:9200/\_security/user

不过 yml 文件还是只有 admin,用 api 查看

image-20250425153959573

使用新用户测试可以访问:

image-20250425153643049

mysql -P 3306 -u admin -p -h mysqlsource.crtihcoeqzab.us-west-2.rds.amazonaws.com < people.sql

mysql -P 3306 -u admin -p -h mysqlsource.crtihcoeqzab.us-west-2.rds.amazonaws.com people

psql -h cloudacademylabs-targetcluster-0zdokkxbiyyh.cluster-ro-crtihcoeqzab.us-west-2.rds.amazonaws.com -U postgres -p 5432 people

Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

https://airag.click/posts/1f7436df/

作者

Xu

发布于

2025-04-23

更新于

2026-02-27

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×