c# - 已成功与服务器建立连接,但在登录过程中出现错误。目标主体名称不正确

标签 c# ssl encryption sql-server-2008-r2 kerberos

我使用openssl 创建了三个证书

  1. 根 CA 证书
  2. 服务器证书
  3. 客户证书

服务器端配置:

我在服务器机器上安装了 server.cer(个人文件夹)和 RootCA(信任根证书颁发机构文件夹)。然后我附上了服务器证书 到 MSSSQL(SQL 配置管理器->MSSQL 属性->证书下拉列表)。将强制加密设为否并重新启动服务。

客户端配置:

我安装了 client.cer(个人文件夹)和 RootCA(信任根证书颁发机构文件夹)。

以下是创建 RootCA(CertAuthority) 以及 server.cert 和 client.crt 的步骤:

openssl genrsa -des3 -out CertAuthority.key 4096
openssl req -new -x509 -days 3650 -key CertAuthority.key -out CertAuthority.crt
openssl req -new -sha256 -key CertAuthority.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -CA CertAuthority.crt -CAkey CertAuthority.key -set_serial 01 -out server.crt
openssl req -new -sha256 -key CertAuthority.key -out client.csr
openssl x509 -req -days 3650 -in client.csr -CA CertAuthority.crt -CAkey CertAuthority.key -set_serial 01 -out client.crt

创建 CertAuthority.crt 时给出的详细信息

Common Name : asia.com
Country : IN

其余字段留空

在创建 server.crt 时给出的详细信息

Common Name : Myserver.asia.com
Country : IN

其余字段留空

创建 Client.crt 时给出的详细信息

Common Name : Myclient.asia.com
Country : IN

其余字段留空

这是我用于 sqlclient 的连接字符串

Data Source=Myserver;Initial Catalog=MyDB;User ID=sa;Password=;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False

每当我尝试使用“Use Encryption For Data=True”作为 Encrypt and TrustServerCertificate 属性的替代方法通过 SQLOLEDB 提供程序进行连接时,我都能够建立SSL 连接成功。

但是通过使用 SqlConnection 我得到以下错误: 已成功与服务器建立连接,但随后在登录过程中发生错误。 (提供商:SSL 提供商,错误:0 - 目标主体名称不正确。)

有人可以帮我解决这方面的问题吗?谢谢

最佳答案

为连接字符串添加此参数:TrustServerCertificate=true

关于c# - 已成功与服务器建立连接,但在登录过程中出现错误。目标主体名称不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38868200/

相关文章:

c# - sql 2008 支持 SqlCacheDependency 吗?

linux - SSL 的透明代理问题

python-3.x - 请求 SSLError : [SSL: CERTIFICATE_VERIFY_FAILED] Windows

javascript - 在JavaScript中使用加密技术有哪些合理的方案?

security - 加密/散列数据库中的纯文本密码

php - 在 laravel 中加密/解密数据库字段

c# - FCM 旧版 http 随机抛出 (502) 错误网关异常

c# - 选择行时修改 ListView 的行行为

c# - 在生产中使用 LocalDb 是否正常?

node.js - 创建客户端证书,将特定 ip 地址添加到证书