ssl - TLS 连接 - Beats 到 Redis
问题描述
我使用 Redis 输出在 Windows 机器上安装了 Winlogbeat。
Redis 服务器在端口 6380 上配置了 TLS。
两端启动服务成功,但连接不成功。我尝试了协议和密码套件的不同组合,但没有运气。我错过了什么?错误消息:
Redis:
Error accepting a client connection: error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher
Windows:
ERROR [publisher_pipeline_output] pipeline/output.go:154 Failed to connect to redis(tcp://10.1.1.4:6380): remote error: tls: handshake failure
这是 redis 服务器配置。CA 是自签名的 2048 位密钥和 x509 证书。服务器证书也是 x509。我想我可能需要重建 CA,但对此表示赞赏。
#tls configs
tls-port 6380
tls-cert-file /etc/ssl/redis.crt
tls-key-file /etc/ssl/private/redis.key
tls-ca-cert-file /usr/local/share/ca-certificates/ca.crt
tls-auth-clients no
tls-prefer-server-ciphers no
tls-protocols "TLSv1.2"
tls-dh-params-file /etc/ssl/redis.dh
tls-ciphers DEFAULT
tls-ciphersuites ECDHE-ECDSA-CHACHA20-POLY1305
还有 Beats 配置。
output.redis:
hosts: ["10.1.1.4:6380"]
password: "redispass"
key: "winlogbeat"
db: 0
timeout: 5
data_type: "list"
ssl:
enabled: true
certificate_authorities: ["C:\\Program Data\\Winlogbeat\\ca.crt"]
insecure: true
supported_protocols: [TLSv1.2]
cipher_suites: [ECDHE-ECDSA-CHACHA20-POLY1305]
curve_types: [P-256]
解决方案
终于搞定了,万一有人感兴趣。
需要使用适当的参数安装和配置 CA,然后使用 IP 地址和主机名为 Redis 创建 SAN 服务器证书。以下是我关注的文章。
在托管 Redis 的服务器上,创建根 CA:https ://blog.devolutions.net/2020/07/tutorial-how-to-generate-secure-self-signed-server-and-client-certificates-with- openssl(只是本文中的根 CA)。
使用 IP 地址主题替代名称创建 Redis 服务器证书:https: //www.golinuxcloud.com/openssl-generate-csr-create-san-certificate/
从支持 TLS 的源安装 Redis:https ://godfrey-tutu.medium.com/redis-6-deployment-with-tls-authentication-on-centos-7-8b6e34d11cd0
Beats 和 Redis 将协商最佳加密。如果您保留现有的 Redis 配置并将 TLS 片段添加到另一个未使用的端口上,那么 Redis 将启动并监听两者。
这是新的 Beat 配置:
output.redis:
hosts: ["10.1.1.4:6380"]
password: "redispass"
key: "winlogbeat"
db: 0
timeout: 5
data_type: "list"
ssl:
enabled: true
certificate_authorities: ["C:\\Program Data\\Winlogbeat\\ca.crt"]
insecure: true
supported_protocols: [TLSv1.1, TLSv1.2]
和 Redis...
tls-port 6380
tls-cert-file /etc/pki/tls/certs/redis.crt
tls-key-file /etc/pki/tls/private/redis.key
tls-ca-cert-file /etc/pki/tls/certs/ca.crt
tls-auth-clients no
tls-protocols "TLSv1.1 TLSv1.2"
tls-prefer-server-ciphers yes
推荐阅读
- php - Wordpress PHP - 替换图像 URL 中的部分字符串
- javascript - 为什么反应中的无限滚动看不到函数map()中的数据?
- c++ - Khronos openvx 标准中的 VX_API_ENTRY 和 VX_API_CALL 是什么?
- angular - 如何在 Angular 组件中解析从服务器发送的错误消息?
- python-3.x - wordcloud 无法将浮点 NaN 转换为整数
- javascript - 如何在线性流之后链接承诺?
- node.js - 单个 npm 语句中的多个安装命令如何工作?
- sql - 根据加入日期和离开日期选择用户
- c# - JObject 正在添加额外的双括号
- kubernetes - 在 Kubernetes Pod 名称中包含 Pod 创建时间