文档中心
ES鑺傜偣鎵╁SSL璇佷功閰嶇疆鍏ㄦ敾鐣ュ畨鍏ㄤ笌鎬ц兘鐨勫钩琛′箣閬?txt
时间 : 2025-09-27 15:45:30浏览量 : 2

****
在Elasticsearch(ES)集群中,随着业务增长,节点扩容是常见需求。但扩容时若忽略SSL证书配置,可能导致数据泄露或集群通信故障。本文用大白话+实例,带你搞定ES节点扩容时的SSL证书问题,既保安全又提性能。
一、为什么扩容时需要关注SSL证书?
场景举例:
假设你的ES集群原有3个节点(node1、node2、node3),所有节点间通过SSL加密通信。现在要新增node4和node5,如果直接启动新节点而不配置证书:
- 风险1:通信失败:新节点没有合法证书,老节点会拒绝连接,日志报错`SSL handshake failed`。
- 风险2:中间人攻击:黑客可能伪造一个节点加入集群,窃取敏感数据(比如用户日志)。
专业知识点:
ES集群的Transport模块(节点间通信)和HTTP接口(用户访问)都依赖SSL/TLS加密。扩容时需确保新老节点的证书由同一CA(证书颁发机构)签发,且包含正确的主机名/IP。
二、SSL证书配置的3个核心步骤
1. 准备统一的CA证书(自签名或商用)
- 自签名示例(适合测试环境):
```bash
生成CA私钥和根证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/CN=my-es-ca"
```
这将生成`ca.key`(私钥)和`ca.crt`(根证书),后续所有节点证书都由它签发。
- 商用CA建议:生产环境建议使用DigiCert、Let's Encrypt等权威机构颁发的证书,避免浏览器警告。
2. 为新节点签发个体证书
以新增`node4.example.com`为例:
```bash
生成私钥和CSR(证书签名请求)
openssl genrsa -out node4.key 2048
openssl req -new -key node4.key -out node4.csr -subj "/CN=node4.example.com"
用CA签发节点证书
openssl x509 -req -in node4.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out node4.crt -days 365
```
关键点:
- `CN=主机名`必须匹配节点的实际DNS或IP(可通过`/etc/hosts`或DNS解析)。
- ES默认校验主机名,若不一致需在配置中关闭验证(不推荐)。
3. ES配置文件调整示例
在`elasticsearch.yml`中添加:
```yaml
Transport层SSL(节点间通信)
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /path/to/node4.key
xpack.security.transport.ssl.certificate: /path/to/node4.crt
xpack.security.transport.ssl.certificate_authorities: /path/to/ca.crt
HTTP层SSL(用户访问)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: /path/to/node4.key
xpack.security.http.ssl.certificate: /path/to/node4.crt
三、避坑指南——常见问题与解决
问题1:新节点无法加入集群,报错“No trusted certificate found”
- 原因:新节点的证书未被CA信任。
- 解决:检查所有节点的`certificate_authorities`路径是否指向同一份`ca.crt`。
问题2:性能下降明显
- 原因:RSA算法加密开销大。
- 优化方案:改用ECDSA算法(更快的握手速度):
openssl ecparam -genkey -name prime256v1 -out node4.key
问题3:证书过期导致集群瘫痪
- 预防措施:监控工具告警+设置自动续期脚本。例如用Certbot定时更新Let's Encrypt证书。
四、与最佳实践建议
1. 统一CA管理: 所有节点的证书必须由同一CA签发。
2. 主机名严格匹配: DNS解析或IP必须与证书CN/SAN一致。
3. 定期轮换: 生产环境建议每90天更新一次密钥。
4. 监控报警: Prometheus+Alertmanager监控剩余有效期。
通过以上步骤,你的ES集群既能安全扩容,又能避免“半夜被报警吵醒”的悲剧!
TAG:es节点扩容ssl证书,es扩容后新节点无法分片,es节点数据迁移,es节点配置,es节点重启后加入不了