Navicat SSL配置核心是服务端启用SSL且客户端路径正确:CA证书必须为绝对路径、正斜杠分隔、PEM格式;Windows填C:/certs/ca.pem,macOS/Linux填/Users/you/certs/ca.pem;私钥不可加密,自签名证书CN须与Navicat所填Host完全一致。
navicat 本身不区分操作系统做 ssl 配置逻辑,但路径写法、文件权限、证书加载行为在 windows/macos/linux 上表现不同——填错路径或忽略权限,连接会静默降级或报 ssl connection error。
CA 证书路径必须用正斜杠且为绝对路径
Navicat 在所有平台都要求 CA 文件(ca.pem)路径是绝对路径,且必须用正斜杠 / 分隔,反斜杠 \ 在 Windows 下也得写成 C:/certs/ca.pem,否则读取失败不报错,只走明文连接。
- Windows:填
C:/navicat/certs/ca.pem(不能写C:\navicat\certs\ca.pem) - macOS:填
/Users/you/certs/ca.pem(~/不展开,别写~/certs/ca.pem) - Linux:填
/home/you/certs/ca.pem(注意用户主目录实际路径,不是/root就别填/root/certs)
路径错误时,Navicat 日志里搜不到 SSL: Cipher,连接状态栏也不显示锁图标,但“测试连接”仍可能显示成功——那是它已自动回退到非 SSL 模式。
客户端密钥对(client-cert.pem + client-key.pem)仅在服务端强制要求时才需填
MySQL/MariaDB 要求客户端证书,前提是用户被授予 REQUIRE X509 或全局启用了 require_secure_transport=ON;PostgreSQL 对应的是 sslmode=verify-full;SQL Server 和 Redis 则不支持客户端证书(Navicat 16+ 的 Redis TLS 连接明确不支持 mTLS)。
- 填了
client-cert.pem和client-key.pem,但服务端没配对应验证,Navicat 会忽略它们,不报错也不警告 - 私钥文件(
client-key.pem)不能带密码——Navicat 不支持输入私钥口令,有密码就直接失败 - macOS/Linux 下,私钥文件权限不能是
644或更宽松,否则 MySQL 服务端拒绝加载;但 Navicat 客户端只读取,不校验权限,所以它能读,但服务端握手会失败,报SSL handshake failed
证书格式和内容必须严格为 PEM,且无 BOM 或多余空行
Navicat 只认标准 PEM 格式:以 -----BEGIN CERTIFICATE----- 开头、-----END CERTIFICATE----- 结尾,中间是 Base64 编码文本。任何 UTF-8 BOM、Windows 回车符 \r\n 混用、末尾多空行,都会导致静默失败。
- 用
file ca.pem命令检查(Linux/macOS):返回PEM certificate才对;若显示data或certificate request,说明格式不对 - Windows 下可用 VS Code 打开,右下角确认编码是
UTF-8,且“CRLF”已转为“LF”(设置 → 行尾序列 → LF) - 自签名证书常见坑:CN(Common Name)必须和 Navicat 连接窗口里填的
Host完全一致;比如 Host 填db.internal,证书 CN 就不能是localhost或 IP
SSL mode / SSL Type 选项在各数据库中的实际生效逻辑
选错模式不会报错,但加密可能不生效。关键看服务端是否真启用并强制 SSL:
- MySQL/MariaDB:
Required是最常用选项,它发SSL REQUEST包,但不校验证书;CA File才触发证书链校验 - PostgreSQL:
require等价于 MySQL 的Required;verify-full才真正校验 CA 和主机名,此时必须填对SSL root certificate路径 - SQL Server:
Require表示启用加密但跳过证书验证;Verify-Full要求 CN/SAN 与 Host 字段完全匹配,差一个点(如dbvsdb.)都断连 - Redis:只有
require(Navicat 里叫 “Use SSL” 勾选即生效),不提供其他模式;它不校验证书,只建立 TLS 通道
跨平台迁移时最容易被忽略的一点:macOS 和 Linux 下,Navicat 默认不读取系统钥匙串或 OpenSSL 配置,所有证书路径必须显式指定;而 Windows 用户容易误信“系统已信任该 CA”,结果 Navicat 仍因没填路径而走明文——它不复用系统证书存储。


















