Navicat所有版本均不支持读取网络共享路径的SSL证书,仅认本地绝对路径;必须将证书同步至本地固定目录(如C:/navicat-certs/),路径不得含空格、中文、符号链接,且需手动更新并验证加密是否真实生效。
Navicat 读不到网络共享路径的证书文件
navicat 所有版本(windows/macos/ios)均不支持从 unc 路径(如 \servercertsca.pem)、smb 挂载点(如 /volumes/share/certs/ca.pem)或 icloud/onedrive 同步目录加载 ssl 证书。它只认本地文件系统上的**绝对路径**,且要求进程有直接读权限——网络路径会被静默忽略,连接退化为明文或报 ssl connection error。
常见错误现象:团队成员在 Navicat 连接设置里填了 \nassslca.pem,测试连接成功但实际未加密;或直接报错 file not found,而日志里完全不提示路径问题。
- 必须把
ca.pem(及可选的client-cert.pem、client-key.pem)下载到每人本地固定目录,例如:C:/navicat-certs/(Windows)或~/navicat-certs/(macOS) - 路径中不能含空格、中文、括号、符号链接——
C:/My Certs/pg/ca.pem和mklink ca.pem \serverca.pem全部无效 - Navicat 不识别波浪号(
~/certs/ca.pem)和相对路径(./certs/ca.pem),必须写完整绝对路径
多人共用一台电脑时证书路径冲突
多用户共用测试机或开发机时,若都往同一本地路径(如 C:/navicat-certs/ca.pem)放证书,不同项目混用 CA 会导致 certificate verify failed —— Navicat 的连接配置是用户级的(存于 %APPDATA%PremierSoftNavicat 或 ~/Library/Application Support/PremierSoft/Navicat/),但证书路径是硬编码在配置里的,换用户登录后若路径不存在,连接直接失效。
- 每人应维护独立子目录,命名带环境标识,例如:
C:/navicat-certs/pg-prod、C:/navicat-certs/mysql-staging - Git 仓库中按服务端分发证书(
pg-prod-ca.pem、mysql-staging-ca.pem),并标注适用场景 - 证书更新后需手动替换本地对应文件——Navicat 不会自动重载,必须重新测试连接
SSL Mode 选错导致验证失败
Navicat 默认走明文,即使服务端开了 SSL,客户端不声明也不加密。勾选 Use SSL 后,SSL Mode 下拉选项决定验证强度,选错会直接中断握手:
-
Require:只要求加密,不校验证书——适合内网自签证书,但无法防中间人 -
Verify-CA:需提供SSL CA File(即根证书),只校验证书是否由该 CA 签发 -
Verify-Full:除 Verify-CA 外,还强制要求连接 Host 字段与证书中Subject CN或Subject Alternative Name完全一致(填db01.internal就不能用192.168.1.10) - 选
Verify-Full却没填SSL CA File,或填了但证书内容不匹配,都会报SSL certificate validation failed
证书本身没问题,但 Navicat 没走加密通道
连接显示 “Connected” 并不代表真走 SSL——尤其当 MySQL 服务端 SSL 配置不完整(比如只配了 ssl_cert 没配 ssl_key)时,会静默降级为未加密连接。必须验证实际协议层是否生效。
- 登录 MySQL 后执行:
SELECT Ssl_cipher FROM performance_schema.threads WHERE TYPE = 'FOREGROUND' AND PROCESSLIST_USER = 'your_user';,结果为空说明没走 SSL - Navicat 连接日志里搜索
SSL: Cipher,出现具体算法名(如ECDHE-RSA-AES128-GCM-SHA256)才算真正生效 - 抓包验证最可靠:
tcpdump -i lo port 3306抓本地连接,若能看到明文 SQL(如SELECT * FROM users),那肯定没加密
真正的难点不在“怎么填”,而在“谁来同步路径”和“怎么确认真加密”。证书文件本身不敏感,但路径硬编码 + 无自动重载 + 无运行时校验,意味着每次更新都得人工对齐三处:Git 仓库、本地目录、Navicat 配置。稍有遗漏,就变成“看着连上了,其实裸奔”。


















