Navicat 16.0.15+ 支持 Redis TLS 连接,需选 Redis (Standalone/Cluster) 类型、配置正确端口与 CA 证书路径,并确认 Redis 启用 TLS 且命令未被 ACL 或 rename-command 禁用。
Redis 6+ 启用 TLS 后,Navicat 连接报 Connection reset by peer
navicat 自 16.0.15 起才正式支持 redis tls 连接,旧版本无论怎么配证书都会失败。不是配置问题,是客户端根本不识别 tls 握手请求。
- 确认 Navicat 版本 ≥
16.0.15(Help → About 查看) - Redis 服务端必须启用 TLS,仅靠 Navicat 单边开启 SSL 无效
- Redis 配置中
tls-cert-file、tls-key-file、tls-ca-cert-file三者缺一不可,否则服务端启动失败或拒绝 TLS 连接 - 若 Redis 同时监听非 TLS 端口(如 6379)和 TLS 端口(如 6380),Navicat 必须连后者,且勾选「Use SSL」
Navicat 中「Use SSL」选项灰掉 / 无法勾选
这不是 Bug,是 Navicat 对 Redis 连接类型的硬性限制:只有选择「Redis (Cluster)」或「Redis (Standalone)」连接类型时,SSL 开关才可用;选错类型(比如误选「Redis (Sentinel)」)会导致该选项被禁用。
- 新建连接时,务必在「Connection Type」下拉框中选
Redis (Standalone)或Redis (Cluster) - 「Host」填 Redis TLS 监听地址(如
redis.example.com),「Port」填6380(或其他你配置的tls-port) - 勾选「Use SSL」后,下方「SSL Certificate Authority」字段必须填写 CA 根证书路径(.pem 文件),不能留空 —— 即使 Redis 用的是自签名证书,也要把
tls-ca-cert-file对应的文件拖进去 - Navicat 不支持双向 TLS(mTLS),所以不用填客户端证书和私钥
连接成功但执行 KEYS * 报错 ERR unknown command `KEYS`, with args beginning with:
这是 Redis 启用 TLS 后常被忽略的权限副作用:部分命令被禁用,不是加密导致的,而是服务端配置了 rename-command KEYS "" 或类似 ACL 规则。SSL 本身不影响命令可用性。
- 检查 Redis 配置文件中是否有
rename-command行,尤其是对KEYS、FLUSHDB、CONFIG的重命名或清空 - 登录 Redis CLI(用
redis-cli --tls --cert ./client.crt --key ./client.key --cacert ./ca.pem -h redis.example.com -p 6380)后运行ACL LIST,确认当前用户权限是否受限 - Navicat 底层调用的是标准 Redis 协议,它不会绕过服务端 ACL 或命令禁用机制
- 开发环境可临时在 redis.conf 中注释掉相关
rename-command行并redis-cli CONFIG REWRITE生效
自签名证书下 Navicat 提示 SSL handshake failed: certificate verify failed
Navicat 默认严格校验证书链,自签名 CA 不在系统信任库中,必须显式指定 CA 文件路径,且该文件内容需为 PEM 格式、包含完整证书链(根 CA + 中间 CA,如有)。
- 确保「SSL Certificate Authority」字段指向的 .pem 文件,开头是
-----BEGIN CERTIFICATE-----,结尾是-----END CERTIFICATE----- - 如果 Redis 的
tls-ca-cert-file是合并多个证书的 bundle,就用同一个文件填入 Navicat;不要只取其中一段 - Windows 下路径含空格或中文可能导致读取失败,建议用短英文路径如
C:\redis\ca.pem - Mac/Linux 用户注意文件权限:Navicat 需有读取权限,
chmod 644 ca.pem











