SQL Server 2022连接SSL错误主因是服务端证书未正确配置,Navicat仅消费加密通道而不生成或校验证书链;需检查证书绑定、主机名匹配、私钥权限,并在Navicat中启用Use SSL及合理设置SSL Mode。

SQL Server 2022服务端必须先配好证书,Navicat不生成也不校验证书链
Navicat 16本身不参与证书签发、安装或私钥管理,它只消费SQL Server已启用的加密通道。连接报ssl provider: the certificate chain was issued by an authority that is not trusted,95%是服务端没配对——不是Navicat设错了。
检查三件事:
- SQL Server配置管理器 → Protocols for [实例名] → 右侧SSL Certificate下拉框是否选中一个有效证书(不能是“无”)
- 该证书的Subject CN或SAN必须匹配Navicat里填的
Host值(比如填sql01.internal,就不能用192.168.1.10连) - Windows事件查看器 → Windows Logs → Application里搜
The certificate was not loaded,有这条说明证书路径错、权限不足或私钥不可读
Navicat 16连接设置里必须显式开启SSL Mode,明文是默认行为
即使SQL Server 2022已强制加密,Navicat默认仍走明文TCP。必须手动打开安全开关:
- 新建或编辑SQL Server连接 → 切到
Security选项卡 - 勾选
Use SSL -
SSL Mode下拉框选Require(内网自签证书够用)或Verify-CA(需提供根证书文件) - 若选
Verify-Full,还必须确保Host字段与证书里的CN/SAN完全一致,且本地有对应ca.pem文件
注意:SSL Mode选Require时,Navicat不校验证书有效性,仅要求通道加密;选Verify-CA或Verify-Full时,必须在Certificate Authority File栏指定本地ca.pem路径,否则直接拒绝连接。
驱动和TLS版本不匹配会导致静默失败,不是证书问题
Navicat 16默认使用系统ODBC驱动,但SQL Server 2022常禁用TLS 1.0/1.1。旧版驱动(如SQL Server Native Client 11.0)只支持低版本TLS,结果就是:证书对、选项全开、防火墙放行,却连不上,日志里只有Handshake failed。
解法:
- 在Navicat连接设置的
Advanced选项卡里,把Native Client字段改成SQL Server(不是Native Client开头的那些) - 确认Windows上已安装ODBC Driver 17 or 18 for SQL Server(微软官方最新驱动)
- 若仍失败,在SQL Server配置管理器里临时允许TLS 1.2兼容模式(注册表项
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\DisabledByDefault=0)
“Cannot generate SSPI context”错误基本和SSL无关,是Windows认证冲突
这个报错常被误判为SSL故障,实际是SSPI协商在启用了SSL的Windows身份验证路径下中断。Navicat对Integrated Security支持有限,尤其在跨域或证书链不完整时。
优先尝试:
- 改用
SQL Server Authentication模式,输sa或普通账号密码(确保SQL Server已启用混合模式) - 若必须用Windows认证,确认SQL Server服务账户对证书私钥有读取权限(右键证书 →
Manage Private Keys→ 添加服务账户) - 临时取消
Use SSL勾选,先连通再逐步加回Require测试,避免叠加故障
真正难调的是证书绑定与主机名匹配、驱动TLS能力、以及Windows认证与SSL的耦合点——这三处任一出问题,都会让连接卡在握手阶段,且错误提示毫无指向性。


















