gpt4 book ai didi

c# - 与数据库的 SSL 连接

转载 作者:太空狗 更新时间:2023-10-29 23:00:59 27 4
gpt4 key购买 nike

我的应用程序需要与 SQL Server 2008 建立安全连接。在服务器端启用“强制加密”后,以下是我的 C# 应用程序的连接字符串。

Initial Catalog=emp_test;Persist Security Info=True;User ID=sa;Password=***;Data Source=172.21.70.94;Provider=SQLOLEDB;Use Encryption for Data=True;Trust Server Certificate=True;

我没有在服务器中提供任何证书 - 因此我设置了 Trust Server Certificate=True,这样自签名服务器证书就不会被验证。

但连接未建立,出现以下错误。

Database error: [DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error.

没有与安全相关的两个属性,它工作正常。

我需要更改什么才能使其正常工作?

最佳答案

使用 SqlConnection 对象有两个好处。首先,您可以确保正确构建连接字符串,因为您可以使用 SqlConnectionStringBuilder 类来构建它。其次,它比 OLEDB 快很多

要构建此连接字符串...

Initial Catalog=emp_test;Persist Security Info=True;User ID=sa;Password=***;Data Source=172.21.70.94;Provider=SQLOLEDB;Use Encryption for Data=True;Trust Server Certificate=True; 

...使用 SqlConnectionStringBuilder 你会写一些这样的代码...

var builder = new SqlConnectionStringBuilder();
builder.DataSource = "172.21.70.94";
builder.Encrypt = true;
builder.TrustServerCertificate = true;
builder.InitialCatalog = emp_test;
builder.PersistSecurityInfo = true;
builder.UserID = "sa";
builder.Password = "***";

var connection = new SqlConnection(builder.ToString());

...Encrypt 属性在 .NET Framework 中保存此定义...

Gets or sets a Boolean value that indicates whether SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed.

...TrustServerCertificate 属性在 .NET Framework 中保存此定义...

Gets or sets a value that indicates whether the channel will be encrypted while bypassing walking the certificate chain to validate trust.

所以我会说这是最安全的方法。您可以确保 .NET Framework 将正确构建连接字符串并且您可以获得一组很好的定义,这些定义围绕这些属性对基于它们的定义的证书意味着什么。


现在,由于您也连接到 Oracle,因此最好的方法是继续建立 OLEDB 连接,因为您别无选择。但是这两个连接都是 IDbConnection,因此您只有一个工厂可以构建正确的连接并返回一个 IDbConnection

这意味着您可以两全其美,SqlConnection 对象的性能和易用性以及 IDbConnection 的抽象,这样您的代码就不必改变。

关于c# - 与数据库的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com