DataWizardess 2025-08-10 08:30 采纳率: 98.8%
浏览 22
已采纳

Navicat连接SQL环境时常见问题之一:如何解决Navicat连接SQL Server时出现的“未找到可信任的SSL连接”错误?

在使用 Navicat 连接 SQL Server 时,用户常遇到“未找到可信任的 SSL 连接(A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.))”错误。此问题通常由 SQL Server 使用的 SSL 证书不受客户端信任引起。可能的原因包括:服务器使用自签名证书、证书颁发机构(CA)未被信任、或未正确配置 SSL 设置。解决方法包括:在客户端安装并信任服务器证书、配置 SQL Server 强制加密并使用受信任证书、或在连接设置中禁用 SSL 加密(不推荐用于生产环境)。掌握这些排查与配置技巧,有助于快速恢复 Navicat 与 SQL Server 的安全连接。
  • 写回答

1条回答 默认 最新

  • 请闭眼沉思 2025-08-10 08:30
    关注

    一、问题背景与现象描述

    在使用 Navicat 连接 SQL Server 数据库时,用户可能会遇到如下错误信息:

    A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)

    该错误表明客户端与 SQL Server 成功建立了 TCP 连接,但在 SSL/TLS 握手阶段失败,具体原因为证书链无法被客户端信任。

    二、可能原因分析

    • SQL Server 使用的是自签名证书,未被客户端信任
    • 证书由内部 CA 签发,但该 CA 未被客户端操作系统信任
    • SSL/TLS 协议版本不兼容,或加密设置配置错误
    • Navicat 客户端未正确配置信任策略

    三、排查流程图

    graph TD A[尝试连接SQL Server] --> B{是否成功建立TCP连接?} B -->|是| C{SSL握手是否失败?} C -->|是| D[证书不受信任] D --> E[检查证书来源] E --> F{是否为自签名证书?} F -->|是| G[安装证书到客户端信任存储] F -->|否| H[检查CA是否被信任] H --> I[将CA证书导入信任根证书颁发机构] C -->|否| J[其他SSL配置问题] J --> K[检查SQL Server配置和协议加密设置]

    四、解决方案详解

    1. 安装并信任服务器证书
      • 导出 SQL Server 使用的证书(.cer 文件)
      • 在客户端操作系统中,打开 certmgr.msc
      • 将证书导入到 受信任的根证书颁发机构本地计算机 存储中
    2. 配置 SQL Server 使用受信任证书
      • 在 SQL Server Configuration Manager 中启用强制加密
      • 将由可信 CA 签发的证书绑定到 SQL Server 服务
      • 重启 SQL Server 服务使配置生效
    3. 在 Navicat 中禁用 SSL 加密(不推荐)
      • 进入 Navicat 的连接设置页面
      • 勾选 Use SSL 并选择 Accept any server certificate(仅限测试环境)

    五、相关配置示例

    以下是一个 SQL Server 强制加密配置的 PowerShell 示例:

    
        # 导入证书
        Import-Certificate -FilePath "C:\cert\sqlserver.cer" -CertStoreLocation Cert:\LocalMachine\My
    
        # 设置 SQL Server 强制加密
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\SuperSocketNetLib" -Name "ForceEncryption" -Value 1
        Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\SuperSocketNetLib" -Name "Certificate" -Value "{Thumbprint of the certificate}"
      

    六、验证连接与常见注意事项

    连接验证建议步骤:

    步骤操作说明
    1使用 pingtelnet 验证网络连通性
    2使用 openssl s_client -connect <server>:<port> 测试 SSL 握手
    3在 Navicat 中重新尝试连接并查看日志

    注意事项:

    • 禁用 SSL 加密仅限于测试环境,生产环境应始终启用加密
    • 证书应定期更新,避免因过期导致连接中断
    • 使用组策略统一部署证书可提高企业级管理效率
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月10日