ssl - TLS 连接 - Beats 到 Redis

标签 ssl redis filebeat

我使用 Redis 输出在 Windows 机器上安装了 Winlogbeat。
Redis 服务器在端口 6380 上配置了 TLS。
两端启动服务成功,但连接不成功。我尝试了协议(protocol)和密码套件的不同组合,但没有运气。我错过了什么?错误消息:

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 位 key 和 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

关于ssl - TLS 连接 - Beats 到 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67233718/

相关文章:

redis - 根据redis中值的引用删除一个键

java - 提高 Redis 日志记录的级别

redis - 如何从不受欢迎/冷的 Redis 中节省内存?

amazon-web-services - 在 AWS ACM 中导入证书的正确方法是什么?

email - 无法从 SOA UMS 驱动程序读取电子邮件

elasticsearch - 将stdout和stderr运送到Logstash

Elasticsearch - 从不在服务器 LAN 上的设备收集日志

elasticsearch - 如何在 logstash conf 文件中使用包含?

amazon-web-services - 使用 cloudHSM 在 Elastic Beanstalk 中设置 SSL

django - 如何使用 ssl 和域在 aws 中部署 react 和 django