Entity Framework Core 7 连接证书信任异常

问题描述 投票:0回答:7

我最近在开发中升级到 Entity Framework Core 7,遇到异常,“已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:SSL 提供程序,错误:0 - )证书链是由不受信任的机构颁发的。)”我正在使用 Microsoft SQL Server Developer(64 位)。我尝试在 VS2022 服务器资源管理器中进行更改以禁用加密并信任服务器证书,我没有安装证书,但异常仍然存在。在开发过程中如何缓解这种情况?

ssl entity-framework-core connection-string ef-core-7.0
7个回答
74
投票

这不是 EF Core 7.0 中的错误,而是安全性的改进。 Microsoft 建议以下 3 种解决方案,无论哪一种都适用于您。

  1. 安装有效的证书。
  2. 将 TrustServerCertificate=True 添加到连接字符串
  3. Encrypt=False
    添加到连接字符串

旧行为 SqlClient 连接字符串默认使用 Encrypt=False。这允许在本地服务器没有有效证书的开发计算机上进行连接。

新行为 SqlClient 连接字符串默认使用 Encrypt=True。这意味着:

服务器必须配置有效的证书 客户端必须信任此证书 如果不满足这些条件,则会抛出 SqlException。例如:

与服务器成功建立连接,但登录过程中出现错误。 (提供商:SSL 提供商,错误:0 - 证书链由不受信任的机构颁发。)

https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/writing-changes


28
投票

Microsoft.EntityFrameworkCore.SqlServer
升级到
7.0.0

后也出现同样的问题

我通过将

TrustServerCertificate=Yes
添加到 SQL Server 连接字符串来解决这个问题。


1
投票

以下代码适用于.net core 6 & 7

> "ConnectionStrings": {
>     "SqlServer": "Data Source=DESKTOP-*****;Initial Catalog=Test;Integrated Security=True;TrustServerCertificate=Yes",
> "LocalSqlProviderEnable": true   }

0
投票

我认为它失败了,因为这是最近的更新。 我遇到了同样的问题,我修复了它并重新安装了以前的版本(6.0.11)。 希望这篇评论对你有帮助。


0
投票

看来答案是等待 EF Core 7 的更新。这应该是一个错误。我的开发全部在一台带有 SQL Server Development Edition 实例的计算机上进行。我想使用 localdb 可能是一种方法。


0
投票

就我而言,我正在运行 SQLExpress,但 Visual Studio 项目 (Blazor) 无法识别服务器,因为 SQL 代理被禁用并且无法从服务启动。 在默认注册用户(身份应用程序上下文)中,它可以运行迁移并创建数据库,但不能。

我已经从 MSSQL Management Studio 创建了数据库,然后更改了连接字符串:

“服务器=(localdb)\mssqllocaldb;数据库=aspnet-BlazorApp1-872e6bbf-3922-4184-85b9-a08dacc49ca9;Trusted_Connection=True;MultipleActiveResultSets=true”

至: “服务器=计算机名\SQLEXPRESS;数据库=数据库名;集成安全性=true;加密= false;TrustServerCertificate=true;”

它起作用了。 我使用了 Visual Studion 2022 和 .NETcore 7


-2
投票

在连接字符串中添加 Encrypt=False 后,问题得到解决。

"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=CommunicationDB;Trusted_Connection=True;MultipleActiveResultSets=True;Encrypt=False;"
© www.soinside.com 2019 - 2024. All rights reserved.