你遇到的这个错误,核心原因是 SQL Server 2022 默认启用了强制加密连接,但客户端无法验证服务器使用的证书。这通常发生在服务器使用自签名证书,而客户端没有将该证书或其颁发机构加入"受信任的根证书颁发机构"列表时。
SQL Server 2022 在安装时会自动创建一个自签名证书来支持 TLS 连接。由于这个证书不是由受信任的公共证书颁发机构(CA)签发的,你的客户端(如 SSMS 或应用程序)在默认的安全策略下会拒绝建立连接,从而抛出你看到的错误。
针对你的情况,有以下几种解决方案,你可以根据使用场景(开发环境还是生产环境)和安全要求来选择:
方案一:快速修复(适用于开发环境或个人测试)
这是最简单直接的方法,让客户端跳过对服务器证书的严格验证。
-
方法1:在连接字符串中添加参数
如果你是通过应用程序连接,可以在连接字符串中追加TrustServerCertificate=True;。这会指示客户端无条件接受服务器提供的任何证书。Server=127.0.0.1;Database=你的数据库;User Id=用户名;Password=密码;TrustServerCertificate=True; -
方法2:在 SSMS 连接时设置
- 打开 SQL Server Management Studio (SSMS),在弹出的"连接到服务器"窗口中,点击右下角的"选项"按钮。
- 切换到"连接属性"选项卡。
- 在"连接安全"部分,勾选"信任服务器证书" 复选框,然后再尝试连接。
方案二:根本性解决(适用于需要稳定连接的环境)
如果你希望从根本上解决证书信任问题,同时又想保留加密连接,可以手动将 SQL Server 的自签名证书安装到客户端的"受信任的根证书颁发机构"存储区。
- 导出服务器证书 :
- 在能成功连接(或曾有证书警告)的机器上,通过 SSMS 连接时,如果弹出证书警告,点击"查看证书",然后在详细信息选项卡中点击"复制到文件",按照向导导出为
.cer格式。 - 或者,你可以通过 SQL Server 配置管理器中的"协议"属性来查看和导出证书。
- 在能成功连接(或曾有证书警告)的机器上,通过 SSMS 连接时,如果弹出证书警告,点击"查看证书",然后在详细信息选项卡中点击"复制到文件",按照向导导出为
- 导入证书到客户端 :
- 在遇到错误的客户端机器上,按
Win + R键,输入mmc打开控制台。 - 添加"证书"管理单元,选择"计算机账户"。
- 展开"受信任的根证书颁发机构" -> "证书",右键点击,选择"所有任务" -> "导入",按照向导导入之前导出的
.cer文件。 - 导入成功后,重启 SSMS 或你的应用程序,再次连接即可。
- 在遇到错误的客户端机器上,按
方案三:调整 SQL Server 服务端加密策略
你还可以在 SQL Server 服务端调整加密强制级别,但这需要重启 SQL Server 服务,请谨慎操作。
- 检查
Force Strict Encryption设置:SQL Server 2022 引入了新的严格加密选项。你可以通过 SQL Server 配置管理器,检查 SQL Server 网络配置中是否启用了"强制严格加密"。如果是,可以尝试暂时禁用它,或设置为仅"强制加密",后者允许与不支持加密的旧客户端进行协商。 - 临时禁用加密:虽然不推荐,但在极端的开发测试环境下,你也可以考虑临时禁用加密。但这会降低数据传输的安全性。
特别提示:SSMS 版本问题
如果你使用的是 SSMS 20.x 版本 ,请注意,Microsoft Q&A 上有多个用户反馈,在连接 SQL Server 2022 创建 SSIS 作业等特定操作时,存在因证书问题导致失败的已知问题。如果上述方法均无效,可以尝试降级使用 SSMS 19.x 版本作为临时替代方案。
希望这些方法能帮你解决问题。如果还是不行,可以告诉我你用的是哪种连接方式(比如 SSMS 具体版本,还是某种编程语言),我再帮你看看。