A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。)”

System.Data.SqlClient 是.NET Framework使用 ADO.NET 旧提供程序。
Microsoft.Data.SqlClient 软件包于2019年发布,它是同时支持.NET Core和.NET Framework的新软件包

在连接数据库字符串上加      Encrypt=false

private static string connectionString = "Data Source=192.168.210.20;Initial Catalog=sprdb;User ID=sa;Password=p@ssw0rd;Encrypt=false;";

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

因为 Microsoft.Data.SqlClient 链接数据库默认会验证服务器 TLS/SSL 证书,所以我们只需要加上自动信任服务器安全,即可跳过验证证书。

  1. //示例 在DB链接字符串末尾加上 trustServerCertificate=true;
  2. "ConnectionStrings": {
  3. "Default": "Data Source=.;Initial Catalog=AuoUserdata;User Id=sa;Password=sa123;trustServerCertificate=true;"
  4. }

trustServerCertificate

如果在使用 TLS 加密通信层时,应自动信任服务器传输层安全性 (TLS)(以前称为安全套接字层 (SSL))证书,则为 true 。 否则为 false

备注

如果 trustServerCertificate 属性设置为 true,则在使用 TLS 加密通信层时,自动信任 SQL Server TLS/SSL 证书 。 换言之,Microsoft JDBC Driver for SQL Server 将不会验证 SQL Server TLS/SSL 证书。 默认值是 false

如果将 trustServerCertificate 属性设置为 false,则 Microsoft JDBC Driver for SQL Server 将验证服务器 TLS/SSL 证书 。