我使用openssl 创建了三个证书
- 根 CA 证书
- 服务器证书
- 客户证书
服务器端配置:
我在服务器机器上安装了 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/