根本原因是SQL Server 2019自签证书未被Windows“受信任的根证书颁发机构”信任,Navicat严格校验导致报错;勾选“信任服务器证书”即启用TrustServerCertificate=true跳过验证,仅适用于开发环境。
Navicat 连接 SQL Server 2019 报“证书链由不可信颁发机构颁发”
根本原因不是 navicat 本身有问题,而是它默认启用加密连接(encrypt=true),而 sql server 2019 安装后自动生成的自签名证书未被 windows 本地计算机的“受信任的根证书颁发机构”存储所信任。navicat 按照 tls 标准严格校验证书链,自然报错。
勾选“信任服务器证书”相当于设置 TrustServerCertificate=true
在 Navicat 的连接配置里点击“高级”或“SSL”选项卡,勾选“信任服务器证书”,本质就是在底层连接字符串中添加了 TrustServerCertificate=true 参数。这会让客户端跳过证书链验证步骤,直接接受服务器发来的证书——不管它是自签名的、CN 不匹配的,还是由未知 CA 签发的。
- 这个参数只在开发/测试环境安全可用;生产环境绝不能依赖它
- 它不解决证书本身问题,只是绕过验证,加密通道仍存在(即通信仍是加密的)
- 如果同时设置了
Encrypt=false,那TrustServerCertificate=true就完全失效,因为根本不走 SSL 握手
比勾选更稳妥的三种替代做法
真正想长期稳定连接,尤其多客户端共用时,建议优先考虑这些方式:
- 把 SQL Server 当前使用的证书(通常是
SQL Server 2019自签的localhost证书)导出为.cer文件,再双击安装到本机“受信任的根证书颁发机构”存储(不是“个人”存储) - 改用
Encrypt=optional而非Encrypt=true:这样当服务器没配好证书时,连接自动降级为非加密,不报错(但需确认业务是否允许明文传输) - 升级驱动:Navicat 若仍在用旧版 OLE DB 或 SQL Server Native Client,换成 Microsoft OLE DB Driver for SQL Server 18.x,对证书处理更健壮,部分场景可缓解误报
容易忽略的关键点
很多人勾选完“信任服务器证书”就以为万事大吉,但没注意:Encrypt 和 TrustServerCertificate 是联动生效的。如果连接字符串里显式写了 Encrypt=false,或者 SQL Server 配置管理器中禁用了“强制加密”,那勾选也无效;反过来,如果服务器端强制加密且证书异常,只改客户端参数只是临时止痛,证书过期、域名不匹配等问题迟早会暴露。











