文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-01 10:57

关注

        今天我在写一个.NET6 API 时,我使用了Dapper框架配置数据库连接,配置好之后,在链接DB时出现错误,发现错误是Microsoft.Data.SqlClient引起的,使用System.Data.SqlClient 就可以正常访问,错误信息如下:

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的新软件包。

经过网上查阅资料,发现原来是Microsoft.Data.SqlClient程序包在链接数据库时,加密默认值为True了,所以会验证服务器 TLS/SSL 证书 ,导致错误:证书链是由不受信任的颁发机构颁发的。

方案一:

其实解决办法很简单,只需要在DB链接字符串后面加上Encrypt=false;字符串,即可解决问题。

//示例 在DB链接字符串末尾加上 encrypt=false;"ConnectionStrings": {    "Default": "Data Source=.;Initial Catalog=AuoUserdata;User Id=sa;Password=sa123;Trusted_Connection=True;Encrypt=false;"  }

微软官方文档说明:

The default value of the connection setting has been false changed from to true . With the growing use of cloud databases and the need to ensure those connections are secure, it's time for this backwards-compatibility-breaking change.

连接设置的默认值已从false更改为true 。随着云数据库的使用越来越多,并且需要确保这些连接的安全,是时候进行这种向后兼容性突破性的更改了。

传送门:Microsoft.Data.SqlClient 4.0新功能 - 加密默认值设置为 true


方案二:

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

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

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 证书 。

传送门:setTrustServerCertificate 方法

结语:

以上两个方案随便选一个即可解决问题,如有不对,欢迎大家指正。整理不易,请给一个点赞 或 关注,感谢!

参考:

使用Dapper时出现错误 证书链是由不受信任的颁发机构颁发的 - 简书 (jianshu.com)

已成功与服务器建立连接,但随后在登录过程中发生错误 来自 .Net 核心 WebAPI 的错误

转载请注明出处:https://blog.csdn.net/Csongxuan/article/details/130335700

来源地址:https://blog.csdn.net/Csongxuan/article/details/130335700

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯