Navicat多平台统一配SSL自签名证书的核心是:必须使用独立CA公钥文件(ca.crt),路径用正斜杠绝对路径(如C:/certs/ca.crt)、禁中文空格括号,且Host名须与证书CN或SAN完全匹配;否则将certificate verify failed或静默降级。

Navicat 多平台统一配 SSL 自签名证书,核心是路径和格式一致
跨 Windows/macOS/Linux 用同一套自签名证书连数据库,不是“复制粘贴证书文件”就完事。Navicat 各平台对路径解析、文件权限、格式容忍度完全不同,硬搬会导致 file not found、SSL certificate validation failed 或静默降级。关键在于:证书必须是 PEM 格式;路径必须用正斜杠;不能含空格/中文/括号;且 CA 文件(不是 server.crt)才是 Navicat 真正需要的。
自签名证书必须用 CA 公钥,不是服务端证书
常见错误是把 server.crt 或 server.pem 直接填进 Navicat 的 “CA File” 字段——这必然失败。Navicat 验证服务端身份时,需要的是签发该服务端证书的根 CA 公钥(即你用 openssl req -x509 生成的 ca.crt 或 ca.pem)。它要构建证书链:server.crt ← signed by ← ca.crt。如果只给 server.crt,Navicat 找不到上级签发者,直接报 certificate verify failed。
- 确认你有独立的 CA 文件:内容以
-----BEGIN CERTIFICATE-----开头,且未包含私钥 - 服务端配置中(如 MySQL 的
ssl_ca、PostgreSQL 的ssl_root_cert)也应指向这个ca.crt,保持两端信任锚点一致 - ClickHouse 和 MongoDB BI Connector 同理:填
ca.crt,不是server.pem
路径写法必须平台无关:一律用正斜杠 + 绝对路径
Navicat 在 Windows 上不认 C:\certs\ca.crt,在 macOS 上不认 ~/certs/ca.crt,Linux 下也不接受环境变量。唯一可靠写法是:
- Windows:
C:/certs/ca.crt(注意是/,不是\) - macOS:
/Users/you/certs/ca.crt(不能用~) - Linux:
/home/user/certs/ca.crt - 所有路径禁止出现中文、空格、括号
( )、波浪号~、百分号变量%USERPROFILE%
建议在各平台统一建一个干净目录,比如 C:/navicat-ssl/ 或 /opt/navicat-ssl/,把 ca.crt 放进去,Navicat 连接设置里就填这个绝对路径。
“允许无效主机名”不是开关,是最后兜底手段
当你填对了 CA 文件、路径也合法,但依然报 SSL certificate hostname mismatch,说明证书里的 Common Name 或 Subject Alternative Name 和 Navicat 连接设置里的 Host 字段不一致。比如证书 CN 是 db.internal,你却在 Navicat 填了 192.168.1.100 —— 这种情况勾选“允许无效主机名”能连上,但会绕过关键安全校验。
- 生产环境绝不勾选此项
- 测试环境若必须用 IP 连接,应在生成证书时明确加入 IP 到 SAN 字段:
subjectAltName = IP:192.168.1.100,DNS:db.internal - Navicat 不提供编辑 SAN 的能力,这个动作必须在 OpenSSL 生成阶段完成
真正卡住人的,往往不是不会生成证书,而是把服务端证书当 CA 用、路径混用反斜杠、或以为勾了 SSL 就万事大吉——其实 Navicat 连上了,但流量根本没走加密通道。


















