我在Microsoft SQL Server 2012 Express Edition上成功配置了SSL,以加密通过Internet建立的数据库的外部网络连接。出于网络上内部客户端的性能原因,我不想强制使用SSL,而是让客户选择是否使用SSL。我通过以下步骤将强制加密设置为否:
当我尝试与Microsoft Sql Server Management Studio建立加密连接时,检查选项>上的加密连接选项连接属性我收到以下错误。
已成功与服务器建立连接,但在登录过程中发生错误。 (provider:SSL Provider,error:0 - 目标主体名称不正确。)(Microsoft SQL Server,错误:-2146893022)
令人惊讶的是,如果我在Sql Server配置管理器上选择强制加密为是,而我在Microsoft Sql上未选择加密连接 Server Management Studio我可以连接到数据库。如果我执行查询:
select * from sys.dm_exec_connections
实际上 encrypt_option 列为TRUE。
证书是使用Openssl生成的,这是信息:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Validity
Not Before: Jun 9 15:53:18 2016 GMT
Not After : Jun 9 15:53:18 2018 GMT
Subject: C=US, ST=State, L=Location, O=Testing, OU=Development, CN=JOSEPH-ASUS
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
...
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
DB:7F:58:DC:F7:D9:90:2A:DF:0E:31:84:5C:49:68:E7:61:97:D8:41
X509v3 Authority Key Identifier:
keyid:C9:5C:79:34:E0:83:B2:C7:26:21:90:17:6A:86:88:84:95:19:88:EA
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Key Encipherment, Data Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Alternative Name:
DNS:alternatename1, DNS:alternatename2, IP Address:192.168.1.100, IP Address:192.191.1.101, IP Address:192.168.1.103
Signature Algorithm: sha256WithRSAEncryption
...
目前的操作系统是Windows 10 Home。
我缺少什么?
答案 0 :(得分:5)
当我做类似的事情时,我收到了这个错误。我还从OpenSSL创建了一个证书并将其导入SQL Server。我还使用SQL Server Management Studio尝试验证是否需要证书的客户端副本。当我这样做时,我得到了上述错误。
解决方案就是在连接窗口中我没有使用证书上的CN:
而不是127.0.0.1(或者你拥有的任何东西)将CN放在证书上,这个连接应该可以工作。
答案 1 :(得分:2)
使用OpenSSL生成的证书正常工作。在我的情况下,问题是在证书上运行MSSQL的帐户的权限,我通过以下步骤解决了这个问题:
答案 2 :(得分:0)
我遇到了同样的问题,并通过将TrustServerCertificate=True;
添加到连接字符串来解决。
答案 3 :(得分:0)
尝试通过sqlcmd连接到需要Windows集成身份验证(选项-E
)但意外使用Azure Active Directory身份验证(选项-G
)的服务器时出现此错误。选择正确的标志为我修好了。请注意,这相当于在连接字符串中包含Trusted_Connection=True
。