Navicat连接SQL Server提示“certificate chain was issued by an authority that is not trusted”根本原因是客户端不信任服务端证书链,常见于自签名证书未导入系统信任库或未配置TrustServerCertificate=True;解决方法包括勾选“信任服务器证书”(即TrustServerCertificate=true)用于开发环境,或导入证书到Windows“受信任的根证书颁发机构”存储以适配生产环境。
Navicat连接SQL Server提示“certificate chain was issued by an authority that is not trusted”
这是典型的ssl/tls握手失败,不是navicat或sql server本身坏了,而是客户端不信任服务端提供的证书链。常见于自签名证书、内部ca签发证书未导入系统信任库、或navicat未显式关闭证书校验。
关键动作不是改SQL Server配置,而是让Navicat绕过或接受该证书:
- 打开Navicat新建SQL Server连接 → 切换到「高级」选项卡
- 勾选
Use custom connection string - 在已有连接字符串末尾追加:
;Encrypt=True;TrustServerCertificate=True - 确保身份验证方式为
SQL Server Authentication(Windows Authentication在此场景下无法传递证书信任上下文)
⚠️ 注意:TrustServerCertificate=True仅适用于内网调试;生产环境必须部署由可信CA签发的有效证书,并设为Encrypt=True;TrustServerCertificate=False。
Navicat报错“a connection was successfully established… but then an error occurred during the pre-login handshake”
这句话说明TCP层已通(即IP+端口可达),但卡在SSL握手阶段。此时ping和telnet 192.168.x.x 1433都成功,但连接仍失败。
排查顺序如下:
- 检查SQL Server是否启用了强制加密:执行
SELECT value, value_in_use FROM sys.configurations WHERE name = 'force encryption';,若value_in_use = 1,则必须处理证书或显式配置信任 - 确认SQL Server实例绑定的证书是否有效:在SQL Server配置管理器 → SQL Server网络配置 → 右键对应实例 → 属性 → “SSL证书”页签,查看证书指纹是否匹配
- 若用的是自签名证书,需手动将该证书导入Windows“本地计算机\受信任的根证书颁发机构”存储区(使用
certlm.msc) - 避免混用
Encrypt=True与TrustServerCertificate=False——这会要求完整证书链可信,而自签名证书天然不满足
Navicat 16/17连接SQL Server 2012 SP4时Encrypt参数必须显式声明
Navicat 16.0.19+默认尝试强加密握手,但SQL Server 2012 SP4在未配置有效证书时,会拒绝Encrypt=True且TrustServerCertificate=False的请求,导致静默失败。
正确做法是明确控制加密行为:
- 不要依赖Navicat自动推断,务必在高级连接中填写完整参数
- 内网调试可用:
;Encrypt=False(彻底禁用TLS)或;Encrypt=True;TrustServerCertificate=True - 若SQL Server已部署有效证书,且证书被客户端系统信任,则用:
;Encrypt=True;TrustServerCertificate=False - 参数必须拼接在连接字符串末尾,中间不加空格,分号结尾
漏掉;或大小写错误(如encrypt小写)都会使参数被忽略,Navicat继续走默认逻辑。
为什么卸载旧Native Client驱动比重装Navicat更有效
Navicat不自带SQL Server驱动,它调用系统ODBC驱动管理器加载SQL Server Native Client 11.0或ODBC Driver 17 for SQL Server。当系统存在多个版本(如11.0、17.0、18.0)时,ODBC管理器可能加载了不兼容的驱动CLSID,导致TLS协商异常——即使你手动指定驱动名,底层仍可能被劫持。
操作要点:
- 进「控制面板 → 程序和功能」,卸载所有含
SQL Server Native Client字样的条目(尤其11.0、12.0) - 从微软官网下载纯净版
sqlncli_x64.msi(x64系统必须用x64,否则驱动注册失败) - 安装后**不要重启Navicat**,直接在连接配置中手动指定Driver为
SQL Server Native Client 11.0 - 验证驱动是否生效:连接失败时查看错误日志,若出现
[Microsoft][ODBC Driver 17 for SQL Server]字样,说明仍在调用旧驱动
驱动冲突是隐藏最深、复现最频繁的根因,很多用户反复重装Navicat却没动ODBC层,问题必然重现。


















