.NET 7迁移后需添加TrustServerCertificate=true的原因咨询
.NET 7 连接SQL Server需添加TrustServerCertificate=true的原因分析
这是因为.NET 7 对SqlClient组件的SSL证书验证逻辑做了关键变更,和.NET 5/6的默认行为不一样:
SqlClient 默认策略调整:在.NET 5/6中,当用Windows集成身份验证(
Integrated Security=SSPI)连接本地SQL Server时,框架会自动信任SQL Server生成的自签名证书,不需要额外配置。但.NET 7升级了SqlClient的默认版本,移除了这个自动信任的逻辑——不管是本地还是远程连接,只要SQL Server没有部署受信任的合法SSL证书,就会触发证书验证失败,进而抛出登录过程中的错误。安全强化的设计:这个变更是.NET团队为了提升数据库连接安全性做出的调整,默认不允许信任未验证的自签名证书,避免潜在的中间人攻击风险,迫使开发者明确处理证书验证的问题。
你的本地连接字符串示例,在.NET 5/6中可以正常使用:
Server=localhost;Database=Xpz;Integrated Security=SSPI;
但到了.NET 7,必须加上TrustServerCertificate=true来绕过证书验证才能正常连接:
Server=localhost;Database=Xpz;Integrated Security=SSPI;TrustServerCertificate=true;
注意:如果是生产环境,不建议依赖TrustServerCertificate=true,最好给SQL Server配置受信任的SSL证书,从根源上解决证书验证问题,保障连接安全。
内容的提问来源于stack exchange,提问作者Leomar de Souza
相关产品推荐
相关产品推荐

