我在Microsoft SQL Server 2012 Express Edition上成功配置了SSL,以加密通过Internet建立的数据库的外部网络连接.出于网络上内部客户端的性能原因,我不想强制使用SSL,而是让客户选择是否使用SSL.我通过以下步骤将强制加密设置为否:
当我尝试与Microsoft Sql Server Management Studio建立加密连接检查选项 > 连接属性上的加密连接选项时,我收到以下错误.
已成功与服务器建立连接,但在登录过程中发生错误.(提供程序:SSL提供程序,错误:0 - 目标主体名称不正确.)(Microsoft SQL Server,错误:-2146893022)
令人惊讶的是,如果我在Sql Server配置管理器上选择强制加密为是,而我没有选择Microsoft Sql Server Management Studio上的加密连接,我可以连接到数据库.如果我执行查询:
select * from sys.dm_exec_connections
Run Code Online (Sandbox Code Playgroud)
实际上,列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
...
Run Code Online (Sandbox Code Playgroud)
当前的操作系统是Windows 10 Home.
我错过了什么?
当我做类似的事情时,我收到了这个错误.我还从OpenSSL创建了一个证书并将其导入SQL Server.我还使用SQL Server Management Studio尝试验证是否需要证书的客户端副本.当我这样做时,我得到了上述错误.
解决方案就是在连接窗口中我没有使用证书上的CN:
而不是127.0.0.1(或你在那里的任何东西)把CN放在证书上,这个连接应该工作.
使用 OpenSSL 生成的证书可以正常工作。在我的情况下,问题是通过证书运行 MSSQL 的帐户的权限,我通过以下步骤解决了这个问题: