Navicat所有版本均不支持UNC路径、SMB挂载点或iCloud/OneDrive同步目录中的SSL证书,仅认本地绝对路径(如C:/navicat-certs/ca.pem),路径不得含空格、中文、符号链接或波浪号,且需手动更新证书并重新测试连接。
Navicat SSL证书路径不认UNC或挂载点,必须用本地绝对路径
navicat所有版本(windows/macos/ios)都不支持从网络路径加载ssl证书——\server\certs\ca.pem、/volumes/share/certs/ca.pem、icloud/onedrive同步目录里的证书文件,全都会被静默忽略。连接要么退化为明文,要么直接报ssl connection error或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 \server\ca.pem全部无效 - Navicat不识别波浪号(
~/certs/ca.pem)和相对路径(./certs/ca.pem),必须写完整绝对路径,比如C:/navicat-certs/pg-prod/ca.pem
多人共用电脑时证书路径冲突导致certificate verify failed
多用户共用测试机或开发机时,若都往同一本地路径(如C:/navicat-certs/ca.pem)放证书,不同项目混用CA会触发certificate verify failed。Navicat的连接配置是用户级的(存于%APPDATA%\PremierSoft\Navicat\或~/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不会自动重载,必须重新点击
Test Connection
SSL Mode选错导致握手中断,Verify-Full对Host字段敏感
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就失败)
常见错误现象:测试连接成功但实际未加密——本质是选了Require模式,而服务端证书未被校验;或填了正确CA路径却报hostname doesn't match,就是Verify-Full下Host不匹配。
macOS和Windows之间迁移时证书路径格式差异易被忽略
macOS用户习惯用~/navicat-certs/ca.pem,但Navicat不解析波浪号;Windows用户复制过来直接填C:\navicat-certs\ca.pem,却忘了反斜杠在XML配置里需转义或被误读。更隐蔽的问题是:macOS上通过Finder拖入的证书可能带资源分支(com.apple.quarantine属性),导致Navicat读取失败且无明确报错。
实操建议:
- 统一用正斜杠路径(
C:/navicat-certs/ca.pem)避免转义问题,Windows也认 - macOS上导入前执行:
xattr -d com.apple.quarantine ~/navicat-certs/ca.pem - 检查证书文件权限:
chmod 644 ca.pem,确保Navicat进程有读权限
最常被跳过的动作:改完证书路径后没点Save就直接Test Connection——修改不生效,看似路径对了,其实还是旧配置在跑。











