我在从Azure网站连接我的DB时遇到了一个错误,它是在虚拟机角色(我有SQL虚拟机角色)。VM Role和Azure Website都在West zone。我面临着以下问题:

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

我可以使用SSMS连接到我的DB。虚拟机角色的1433端口是开放的。 我的连接有什么问题?


当前回答

如果您正在使用答案中提到的任何连接属性,如果true/false似乎不起作用,则接受的值为yes/no。

TrustServerCertificate -接受字符串“yes”和“no”作为值。默认值为“no”,表示验证服务器证书。

使用ODBC 18.0 -希望它有帮助。

连接字符串属性

其他回答

如果您正在使用答案中提到的任何连接属性,如果true/false似乎不起作用,则接受的值为yes/no。

TrustServerCertificate -接受字符串“yes”和“no”作为值。默认值为“no”,表示验证服务器证书。

使用ODBC 18.0 -希望它有帮助。

连接字符串属性

从ssms客户端本身也可以实现同样的功能。只需打开ssms,插入服务器名称,然后从标题连接属性下的选项确保信任服务器证书被选中。

对于那些不喜欢TrustServerCertificate=True答案的人,如果你有足够的访问权限,你可以导出SQL Server证书并在你试图连接的地方安装。这可能不适用于SQL Server自己生成的证书,但如果您使用类似New-SelfSignedCertificate的东西,则可以使用MMC导出证书,然后在客户端上使用MMC导入证书。

SQL Server:

在MMC中添加证书管理单元 浏览到证书>个人>证书 选择新证书,右键单击,然后选择All Tasks > Manage Private Keys(这一步和下面的步骤是使密钥与SQL server一起工作的一部分) 添加具有READ权限的运行SQL Server的标识(如果有疑问,请在Services中查找标识)。 选择新证书,右键单击,选择“All Tasks > Export…” 使用默认设置并另存为文件。

客户端:

使用MMS与相同的管理单元选项和证书>受信任的根证书颁发机构右键单击证书并选择所有任务>导入… 导入之前导出的文件

(我在同一台服务器上做所有事情,直到我重新启动SQL实例,SSMS仍有抱怨问题。这样我就可以在没有信托的情况下加密连接…复选框选中)

我添加了这2行到ConnectionString和它工作

Trusted_Connection=True
TrustServerCertificate=True

如果你使用EF Core 7,微软官方文档中解释了一个突破性的变化 https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/breaking-changes#encrypt-defaults-to-true-for-sql-server-connections