文档中心
ElasticsearchSSL璇佷功閰嶇疆鍏ㄦ寚鍗楁墜鎶婃墜鏁欎綘鎼缓鍔犲瘑閫氫俊
时间 : 2025-09-27 15:45:52浏览量 : 1

在当今的网络安全环境中,数据传输的安全性至关重要。如果你的Elasticsearch集群没有启用SSL/TLS加密,那么所有传输的数据(包括敏感信息)都可能被中间人攻击窃取。本文将用大白话+实例的方式,带你一步步为Elasticsearch配置SSL证书,确保通信安全。
一、为什么Elasticsearch需要SSL证书?
想象一下:你通过HTTP发送一封明信片(未加密的数据),邮递员(或黑客)可以随意查看内容。而HTTPS就像给明信片装上了保险箱,只有收件人有钥匙(私钥)。
典型风险场景:
1. 数据泄露:攻击者监听Elasticsearch节点间的通信(如分片同步)。
2. 认证缺失:伪造节点加入集群(比如恶意节点冒充`data-node-01`)。
二、SSL证书的类型与选择
为Elasticsearch配置SSL通常需要两类证书:
1. 节点证书:用于节点间内部通信(Transport Layer)。
2. HTTP层证书:用于Kibana或客户端与ES的交互(HTTPS)。
常见选项:
- 自签名证书(适合测试环境):
```bash
示例:用OpenSSL生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
```
- CA签发证书(生产环境推荐):如Let's Encrypt、企业内建CA。
三、实战配置步骤
步骤1:准备证书文件
假设你已生成以下文件(以自签名为例):
- `elasticsearch.key`:私钥文件
- `elasticsearch.crt`:公钥证书
- `ca.crt`:CA根证书(如果是CA签发)
步骤2:修改Elasticsearch配置文件
编辑`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/elasticsearch.key
xpack.security.transport.ssl.certificate: /path/to/elasticsearch.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/elasticsearch.key
xpack.security.http.ssl.certificate: /path/to/elasticsearch.crt
```
步骤3:设置密钥库密码
Elasticsearch会要求将私钥密码存储在密钥库中:
```bash
bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
bin/elasticsearch-keystore add xpack.security.http.ssl.secure_key_passphrase
步骤4:重启并验证
重启集群后,用CURL测试HTTPS是否生效:
curl -k https://localhost:9200 -u "elastic:yourpassword"
看到返回JSON数据且无警告即表示成功!
四、常见问题与排错
1. 错误:“PKIX path validation failed”
*原因*:客户端不信任你的CA根证书。
*解决*:将`ca.crt`导入到客户端的信任库(如Java的`cacerts`)。
2. 错误:“Private key is encrypted”
*原因*:私钥文件有密码保护但未配置密钥库。
*解决*:通过`openssl rsa -in key.pem -out decrypted-key.pem`解密,或正确配置密钥库密码。
3. 性能问题
SSL加密会增加CPU开销。若性能下降明显,可考虑:
- 使用ECDSA证书替代RSA(更快的握手速度)。
- 调整JVM的TLS协议版本(如禁用旧版TLS 1.0)。
五、高级技巧
1. 定期轮换证书
通过脚本自动化更新证书,避免过期导致服务中断:
```bash
示例:用Certbot自动续签Let's Encrypt证书
certbot renew --post-hook "systemctl restart elasticsearch"
```
2. 双向认证(mTLS)
要求客户端也提供证书,适合高安全场景:
```yaml
xpack.security.transport.ssl.client_authentication: required
****
为Elasticsearch配置SSL证书就像给你的数据快递加上“防弹装甲”。无论是自签名还是CA签发,核心步骤都是三步走:
1??生成证书 → 2??修改配置 → 3??验证生效。按照本文操作后,你的集群将彻底告别“裸奔”风险!
TAG:elasticsearch ssl证书,curl ssl,curl ssl certificate problem,curl ssl connect error,curl ssl_error_syscall,curl证书访问https,curl 证书使用方法,curl performs ssl,curl ssl received,curl ssl版本