redis哨兵模式本身不支持tls双向认证,仅主从节点需配置tls-auth-clients yes及配套证书实现双向认证,哨兵仅明文协调;主从必须使用tls-port通信,客户端连哨兵后须手动启用tls并传入完整证书链。

Redis哨兵模式本身不支持TLS双向认证——哨兵节点(redis-sentinel)至今(2026年)没有tls-port、tls-cert-file或tls-auth-clients等任何TLS配置项。所谓“哨兵下的双向认证”,实际是主从节点启用TLS双向认证(即tls-auth-clients yes + 客户端提供有效证书),而哨兵仅作为明文协调者参与故障发现与切换。
主从节点必须启用tls-auth-clients yes并验证客户端证书
双向认证的关键在主从服务端,不在哨兵。若只配单向(服务器发证、客户端验),攻击者仍可伪造客户端连接;双向要求客户端也出示由同一CA签发的证书,服务端用tls-ca-cert-file校验其合法性。
-
tls-auth-clients yes:强制所有连接(包括从节点复制、客户端直连)提供有效证书,否则拒绝连接 -
tls-verify-client optional或required:决定是否检查证书中subject字段(如CN),生产环境建议required并配合ACL限制用户范围 - 主从节点的
redis.conf中必须同时配置:tls-cert-file、tls-key-file、tls-ca-cert-file,且三者私钥/证书链匹配 - 从节点连接主节点时,也需在自己的配置中指定
tls-cert-file和tls-key-file,否则replicaof握手失败(报错类似SSL_connect failed: certificate verify failed)
哨兵配置里端口必须指向主从的tls-port,而非普通port
哨兵虽不加密通信,但它要能正确发现并跳转到启用了TLS的主从地址。如果sentinel monitor写的是6379(明文端口),而主节点只监听6380(TLS端口),哨兵会持续标记主节点sdown。
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
-
sentinel monitor mymaster 10.0.1.10 6380 2:IP和端口必须与主节点的tls-port完全一致 -
sentinel down-after-milliseconds建议设为8000以上:TLS握手比明文多1–2个RTT,超时太短会导致误判 - 无需在
sentinel.conf里写任何tls-*参数——写了也会被忽略 - 验证方式:
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster应返回10.0.1.10和6380,不是6379
ioredis/go-redis等客户端连哨兵后,必须手动启用TLS并传入证书
哨兵返回的主节点地址(如10.0.1.10:6380)只是字符串,客户端不会自动加--tls。若客户端代码仍用明文连接该地址,会直接被主节点因tls-auth-clients yes拒绝。
- ioredis示例中,
tls对象必须包含ca、cert、key三项(双向认证必需):const redis = new Redis({ sentinels: [{ host: 'sentinel1', port: 26379 }], name: 'mymaster', tls: { ca: fs.readFileSync('/path/to/ca.crt'), cert: fs.readFileSync('/path/to/client.crt'), key: fs.readFileSync('/path/to/client.key'), servername: 'redis.example.com' } }); - go-redis同理,
TLSConfig中Certificates字段需加载客户端证书+私钥,RootCAs加载CA证书 - 错误现象:
Error: read: connection reset或ssl_handshake_failed,大概率是客户端没传cert/key,或CA不匹配
真正容易被忽略的点是:从节点自身的复制连接也必须走TLS双向认证。这意味着每个从节点的配置里不仅要设tls-auth-clients yes,还要确保它启动时能读取自己的tls-cert-file和tls-key-file——否则故障转移后,新主节点会拒绝这个从节点的同步请求,集群卡在failover-aborted状态。










