Ansible-Elasticsearch项目中的SSL/TLS安全配置指南
前言
在现代分布式系统中,数据安全传输是至关重要的环节。本文将详细介绍如何在Ansible-Elasticsearch项目中配置SSL/TLS加密通信,确保Elasticsearch集群的HTTP和传输层通信安全。
SSL/TLS基础概念
SSL/TLS协议为网络通信提供了加密、身份验证和数据完整性保护。在Elasticsearch集群中,主要涉及两种通信加密:
- HTTP层加密:保护客户端与Elasticsearch节点间的REST API通信
- 传输层加密:保护集群节点间的内部通信
准备工作
在开始配置前,您需要准备以下内容:
- PKCS12或PEM格式的证书文件
- 了解证书密码(如果有)
- 确保Ansible控制机能够访问目标Elasticsearch节点
核心配置参数
基本开关配置
# 启用HTTP层SSL/TLS
es_enable_http_ssl: true
# 启用传输层SSL/TLS
es_enable_transport_ssl: true
PKCS12证书配置
PKCS12是一种常见的证书存储格式,它将证书、私钥和CA证书打包在一个文件中:
# 密钥库路径
es_ssl_keystore: "path/to/keystore.p12"
# 密钥库密码
es_ssl_keystore_password: "your_password"
# 信任库路径(可与密钥库相同)
es_ssl_truststore: "path/to/truststore.p12"
# 信任库密码
es_ssl_truststore_password: "your_password"
PEM证书配置
PEM是另一种常见的证书格式,使用Base64编码的文本文件:
# SSL私钥路径
es_ssl_key: "path/to/key.pem"
# 私钥密码(如果有)
es_ssl_key_password: "your_password"
# SSL证书路径
es_ssl_certificate: "path/to/cert.pem"
证书创建指南
Elasticsearch提供了elasticsearch-certutil工具来简化证书创建过程:
带密码的证书创建
# 创建CA证书
bin/elasticsearch-certutil ca --out ./my-ca.p12 --pass "ca_password"
# 创建节点证书
bin/elasticsearch-certutil cert --ca ./my-ca.p12 --ca-pass "ca_password" \
--out ./my-keystore.p12 --pass "keystore_password"
无密码证书创建
# 创建CA证书
bin/elasticsearch-certutil ca --out ./my-ca.p12 --pass ""
# 创建节点证书
bin/elasticsearch-certutil cert --ca ./my-ca.p12 --out ./my-keystore.p12 --pass ""
高级配置选项
# 是否自动添加SSL配置到elasticsearch.yml
es_enable_auto_ssl_configuration: true
# 证书在节点上的存储路径
es_ssl_certificate_path: "/etc/elasticsearch/certs"
# 证书验证模式
es_ssl_verification_mode: "certificate"
# 受信任的CA证书
es_ssl_certificate_authority: "path/to/ca.pem"
# 是否验证HTTPS证书
es_validate_certs: false
完整配置示例
- name: 配置带SSL/TLS的Elasticsearch集群
hosts: es_nodes
roles:
- role: elastic.elasticsearch
vars:
es_config:
node.name: "es-node-1"
cluster.name: "secure-cluster"
discovery.seed_hosts: ["es-node-1:9300", "es-node-2:9300"]
http.port: 9200
transport.port: 9300
bootstrap.memory_lock: true
es_heap_size: 4g
es_enable_http_ssl: true
es_enable_transport_ssl: true
es_ssl_keystore: "certs/node1-keystore.p12"
es_ssl_truststore: "certs/ca-truststore.p12"
es_ssl_keystore_password: "secure_password"
es_ssl_truststore_password: "ca_password"
修改默认用户密码
Elasticsearch安装后会创建默认的elastic用户,建议在生产环境中修改其密码:
- 首次部署时修改密码:
vars:
es_api_basic_auth_username: "elastic"
es_api_basic_auth_password: "changeme"
es_users:
native:
elastic:
password: "new_secure_password"
- 更新后的配置:
vars:
es_api_basic_auth_username: "elastic"
es_api_basic_auth_password: "new_secure_password"
最佳实践建议
-
证书管理:
- 为生产环境使用正式的CA签名证书
- 定期轮换证书
- 为不同环境使用不同的证书
-
安全配置:
- 始终启用传输层加密
- 在测试环境可以使用自签名证书,生产环境应使用受信任的CA证书
- 设置适当的证书验证级别
-
性能考虑:
- SSL/TLS会增加CPU开销,适当增加节点资源
- 监控加密通信的性能影响
通过本文的指导,您应该能够在Ansible-Elasticsearch项目中成功配置SSL/TLS加密,为您的Elasticsearch集群提供安全的通信保障。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



