You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL证书链不受信任错误求助:航班预订应用登录失败

解决SQL Server证书链未受信任的连接错误(常规方案无效时)

问题重现

运行航班预订应用时触发如下错误:

Microsoft.Data.SqlClient.SqlException: '已成功与服务器建立连接,但登录过程中发生错误。(provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)'
Win32Exception: The certificate chain was issued by an authority that is not trusted.

错误触发代码行:

entities.Database.EnsureCreated();

已尝试操作:

  • 修改连接字符串为:
    "DefaultConnection": "Server=.\SQLEXPRESS; Database=Flights; Trusted_Connection=True; Encrypt=False; TrustServerCertificate=True;"
    
  • 确认服务器IP正确
  • 手动勾选信任证书
  • 配置SQL Server允许连接

但错误仍未解决。


针对性解决方案

1. 修正连接字符串的转义问题

JSON配置文件中反斜杠\需要双重转义,你的连接字符串里Server=.\SQLEXPRESS会被JSON解析错误,导致实例名称识别异常,进而触发证书错误。修正后的连接字符串:

"DefaultConnection": "Server=\\\\SQLEXPRESS; Database=Flights; Trusted_Connection=True; Encrypt=False; TrustServerCertificate=True;"

如果是web.config这类非JSON配置文件,无需转义,直接保留Server=.\SQLEXPRESS即可。

2. 检查SQL Server实例的强制加密设置

即使连接字符串指定Encrypt=False,SQL Server实例可能强制要求加密连接:

  • 打开SQL Server配置管理器
  • 展开SQL Server网络配置 -> 选中目标实例(如SQLEXPRESS)的协议
  • 右键TCP/IP -> 属性 -> 切换到IP地址选项卡,拉至底部IPAll区域,将Force Encryption改为No
  • 重启SQL Server服务生效

3. 验证EF Core上下文的连接字符串配置

确保DbContext确实使用了DefaultConnection配置项,比如在Program.cs中:

builder.Services.AddDbContext<FlightDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

若上下文硬编码了其他连接字符串,或读取的配置项名称不匹配,之前的修改将不会生效。

4. 清理应用缓存与重建项目

  • 删除项目的bin和obj文件夹,重新编译解决方案
  • 重启IDE(如Visual Studio)和SQL Server服务
  • 若为发布后的应用,替换发布目录下的配置文件并重启应用

5. 重新导入证书到受信任根CA

手动勾选信任可能未正确将证书加入受信任根目录:

  • 打开证书管理器(Win+R输入certmgr.msc)
  • 在SQL Server配置管理器的TCP/IP协议证书选项卡中找到目标证书名称
  • 在证书管理器中找到该证书,右键选择所有任务 -> 导出,保存为Base64编码的X.509格式
  • 将导出的证书导入到受信任的根证书颁发机构 -> 证书节点下

内容的提问来源于stack exchange,提问作者Zayne Geffre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:53:13