Zaf*_*afi 166 azure-web-roles azure-vm-role
从Azure网站连接虚拟机角色(我有SQL VM角色)的MY DB时遇到错误.VM Role和Azure Website都位于West区域.我正面临以下问题:
SqlException(0x80131904):已成功与服务器建立连接,但在登录过程中发生错误.(提供者:SSL提供者,错误:0 - 证书链由不受信任的机构颁发.)]
我可以使用SSMS连接到我的数据库.我的VM角色打开了1433端口.我的连接有什么问题?
Ale*_*lex 409
我决定添加另一个答案,因为这篇文章作为此错误的第一个 Google 结果弹出。
如果您在 2022 年 1 月之后收到此错误,可能是从版本 4.0.0 或更高版本迁移或刚刚更新到版本 4.0.0 或更高版本之后System.Data.SqlClient
,Microsoft.Data.SqlClient
这Microsoft.Data.SqlClient
是因为 MS 引入了重大更改:
4.0 中的重大变化
Encrypt
将连接字符串属性更改为true
默认值。连接设置的默认值
Encrypt
已从 更改false
为true
。随着云数据库的使用不断增加以及确保这些连接安全的需要,是时候进行这种破坏向后兼容性的更改了。确保需要加密时连接失败
Encrypt
在客户端加密库被禁用或不可用的情况下,当设置为true
或服务器需要加密时,可能会建立未加密的连接。
该更改是在 2021 年 8 月的 SqlClient 拉取请求中进行的,其中有关于更改的其他讨论。
Encrypt=false
到您的连接字符串中。Thi*_*lva 335
您可能没有在SQL VM的受信任根存储中安装CA签名证书.
如果您具有Encrypt=True
连接字符串,请将其设置为关闭(不推荐),或在连接字符串中添加以下内容:
TrustServerCertificate=True
Run Code Online (Sandbox Code Playgroud)
如果您没有安装一个自签名证书,SQL Server将创建一个自签名证书,但它不会被调用者信任,因为它不是CA签名的,除非您告诉连接字符串信任任何服务器证书默认.
从长远来看,我建议利用Let's Encrypt免费从已知的可信CA获取CA签名证书,并将其安装在VM上.不要忘记将其设置为自动刷新.您可以在"SQL加密层次结构"主题和"使用无验证加密"主题的SQL Server书籍中阅读有关此主题的更多信息.
HTH
T.S*_*.S. 59
我在实体框架迁移中收到此消息。我能够使用 Win Auth 连接到 Sql Server 并手动创建表。但是EF不行。这个连接字符串终于起作用了
Server=MyServerName;Database=MyDbName;Trusted_Connection=SSPI;Encrypt=false;TrustServerCertificate=true
Run Code Online (Sandbox Code Playgroud)
小智 53
如果您正在使用SQL Management Studio,请转到连接属性并单击"Trust server certificated"
小智 29
如果在尝试使用SQL Management Studio进行连接时看到此错误消息,请将TrustServerCertificate = True添加到其他连接参数.
小智 22
我将这两行添加到 ConnectionString 中并且它起作用了
Trusted_Connection=True
TrustServerCertificate=True
Run Code Online (Sandbox Code Playgroud)
小智 19
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-O5SR0H0\\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;TrustServerCertificate=True;"
}
}
Run Code Online (Sandbox Code Playgroud)
Md *_*iar 19
PM> Scaffold-DbContext "Server=localhost;Database=BookStoresDB;Trusted_Connection=True;TrustServerCertificate=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Run Code Online (Sandbox Code Playgroud)
使用“TrustServerCertificate = True”解决了错误“已成功与服务器建立连接,但在登录过程中发生错误。(提供商:SSL提供商,错误:0 - 证书链由不受信任的机构颁发) .)"
dim*_*its 17
如果您使用 EF Core 7,则会有一个重大更改,在 Microsoft 官方文档中进行了解释 https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/writing-更改#encrypt-defaults-to-true-for-sql-server-connections
Orw*_*ile 14
如果你想完全放弃所有安全性:
虽然一般答案本身是正确的,但我发现它对于我的 SQL Server 导入和导出向导导向问题来说还不够。假设您有一个有效的(自动的)基于 Windows 安全的登录:
连接字符串
Data Source=localhost;
Initial Catalog=<YOUR DATABASE HERE>;
Integrated Security=True;
Encrypt=True;
TrustServerCertificate=True;
User Instance=False
Run Code Online (Sandbox Code Playgroud)
这可以是完整的ConnectionString(全部在一行上),也可以将这些值单独应用到其字段。
就我而言,通过Encrypt=false;TrustServerCertificate=true;扩展连接字符串还不够。
我仍然需要在 NuGet 控制台中输入:
更新数据库-详细
就我而言,我在 中更改了多次appsettings.json
,但在appsettings.Develpment.json
. 更改应用程序设置的开发版本后。效果很好。
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-M08SV8P;Database=ActivityProject;Trusted_Connection=True;TrustServerCertificate=True;"
},
Run Code Online (Sandbox Code Playgroud)
有关如何使用 SSMS 使 encrypt = False 的指南。仅用于本地发展目的。不建议用于生产用例。
对于那些不喜欢这个TrustServerCertificate=True
答案的人,如果您有足够的访问权限,您可以导出 SQL Server 证书并安装在您尝试连接的位置。这可能不适用于 SQL Server 自生成的证书,但如果您使用New-SelfSignedCertificate之类的证书,则可以使用 MMC 导出证书,然后在客户端上使用 MMC 导入它。
在 SQL Server 上:
在客户端:
(我在同一台服务器上执行所有操作,但仍然遇到 SSMS 抱怨的问题,直到我重新启动 SQL 实例。然后我可以在不选中“信任...”复选框的情况下进行加密连接)
当您使用 时SqlPackage.exe
,Encrypt=False
连接字符串中的 会被忽略。
添加/TargetTrustServerCertificate:true
到 SqlPackage 命令来修复此问题。
小智 6
简单来说,如果您在本地运行,这就足够了
"ConnectionString": "数据源=(本地);初始目录=BlazorDashboardDb;TrustServerCertificate=True;集成安全性=True;",
TrustServerCertificate进行 SSL 处理 Integrated Security进行 Windows 验证,如果 sql 身份验证则添加参数为“用户 ID=adminUsername;密码=adminSecretPasswordwhatever”
要覆盖所有场景,下面的帮助“数据源 =(本地);初始目录 = BlazorDashboardDb;TrustServerCertificate = True;Trusted_Connection = True;集成安全性 = True;MultipleActiveResultSets = true;Encrypt = True;”
Trusted_Connection用于信任连接模式 Encrypt用于凭证
连接到服务器(az-sql)ex:“服务器= tcp:firstserver.database.windows.net,1433;初始目录=第一;持久安全信息= False;用户ID = adminUsername;密码= adminSecretPasswordwhatever;MultipleActiveResultSets = False;加密=True;TrustServerCertificate=True;连接超时=30;"
小智 5
如果您尝试通过 Visual Studio 2015 中的数据连接访问它,并收到上述错误,则转到高级并设置
TrustServerCertificate=True
错误消失。
归档时间: |
|
查看次数: |
204461 次 |
最近记录: |