SQL Server配置管理器中的下拉列表中缺少SSL证书

Jon*_*nah 14 sql-server iis ssl certificate

我正在尝试配置SQL Server 2014,以便我可以使用SSL远程连接到它.服务器上安装了有效的通配符证书,证书的域名(example.com)与服务器的FQDN(test.windows-server-test.example.com)匹配.

问题是在SQL Server配置管理器中,未列出证书,因此我无法选择它.

空白下拉列表

也就是说,我从这个MS教程中坚持第2.e.2步.

Ole*_*leg 17

在评论中进行沟通后,我可以假设您的主要问题是您使用的证书的CN部分.要为IIS服务器进行成功的TLS通信,就没有像SQL Server那样的强大限制.

Microsoft要求(请参阅此处)证书的名称必须是计算机的完全限定域名(FQDN).这意味着证书的Subject部分看起来像CN = test.widows-server-test.example.com,其中test.widows-server-test.example.com是您计算机的FQDN.这是不够的,你使用例如CN =*.example.com的主题备用名称,其中包含DNS Name=*.example.comDNS Name=test.widows-server-test.example.com,DNS Name=test1.widows-server-test.example.com,DNS Name=test.widows-server-test2.example.com等.这样的证书对于TLS是可以的,但SQL Server会丢弃它.请参阅描述密切问题的文章.

我建议您创建CN等于SQL Server FQDN的自签名证书,并验证SQL Server配置管理器是否可以看到该证书.

更新:我对Process Monitor进行了更多的分析,发现Registry中的两个值对SQL Server Configuration Manager很重要:值HostnameDomain键下的值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Run Code Online (Sandbox Code Playgroud)

如果我更改了DomainHostname证书对应的CN的值,那么证书将已经显示在SQL Server配置管理器中.它可能不是所有问题,但它表明SQL Server需要更多的Web服务器(例如IIS).

更新2:我再次详细检查了这个问题,我想我确实找到了如何配置你已经拥有的通用SSL证书的方式(例如从Let的加密,StartSSL或其他一些证书中免费获得SSL ).

SQL Server配置管理器与SQL Server所需的配置区分开来非常重要.Configuration Manager属性的"证书"选项卡具有与SQL Server相比更多的硬性限制.我上面仅描述了SQL Server配置管理器的限制,但可以直接在注册表中进行配置,以便使用SQL Server提供的更常见的SSL/TLS证书.我在下面描述了如何做到这一点.

一个人需要做的就是在关键字下的注册表中,例如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib,MSSQL12.SQL2014在你的情况下,部分可能会有所不同.SQL Server配置管理器帮助我们在注册表中设置两个值:ForceEncryptionCertificate:

在此输入图像描述

Certificate值是SHA1哈希这可以通过检查证书的属性中找到:

在此输入图像描述

或者您通过使用看到的证书的扩展属性certutil.exe -store My:

在此输入图像描述

只需要复制"Cert Hash(sha1)"值,删除所有空格并将其作为值的Certificate值放在注册表中.进行设置并重新启动SQL Server Windows服务后,会ERRORLOGC:\Program Files\Microsoft SQL Server\...\MSSQL\Log目录中的文件中看到该行

2016-04-25 21:44:25.89服务器证书[Cert Hash(sha1)"C261A7C38759A5AD96AC258B62A308A26DB525AA"]已成功加载进行加密.


小智 7

我想为将来可能会遇到我在 SQL 2016 SP2 和故障转移集群中遇到的类似问题的人添加此内容。添加到注册表的证书指纹必须全部大写。

希望这对下一个人有帮助。