it-swarm.com.ru

Сертификат SSL отсутствует из раскрывающегося списка в диспетчере конфигурации SQL Server

Я пытаюсь настроить SQL Server 2014, чтобы я мог подключиться к нему удаленно, используя SSL. На сервере установлен действительный подстановочный сертификат, а доменное имя сертификата (example.com) соответствует полному доменному имени сервера (test.windows-server-test.example.com).

Проблема в том, что в диспетчере конфигурации SQL Server сертификат отсутствует в списке, поэтому я не могу выбрать его.

 blank dropdown

То есть я застрял на шаге 2.e.2 из этого учебника по MS

9
Jonah

После сообщения в комментариях я могу предположить, что вашей основной проблемой является часть CN сертификата, который вы используете. Чтобы иметь успешную связь TLS для IIS Сервера, не должно быть таких строгих ограничений, как у SQL Server.

Microsoft требует (см. здесь ), что Имя сертификата должно быть полным доменным именем (FQDN) компьютера. Это означает, что часть сертификата Subject выглядит следующим образом: CN = test.widows-server-test.example.com, где test.widows-server-test.example.com - полное доменное имя вашего компьютера. Недостаточно использовать, например, CN = * .example.com и Subject Alternative Name, которое содержит DNS Name=*.example.com и DNS 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, и убедиться, что сертификат будет виден диспетчеру конфигурации SQL Server.

UPDATED: я немного больше проанализировал проблему с точки зрения Process Monitor и обнаружил, что для диспетчера конфигурации SQL Server важны два значения в реестре: значения Hostname и Domain под ключом

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Если я изменю Domain и Hostname на значения, соответствующие CN сертификата, тогда сертификат будет отображаться в диспетчере конфигурации SQL Server. Это могут быть не все проблемы, но это показывает, что SQL Server требуется гораздо больше в качестве веб-сервера (например, IIS).

ОБНОВЛЕНО 2: Я еще раз подробно рассмотрел проблему и, думаю, нашел способ, как можно настроить общий SSL-сертификат, который у вас уже есть (например, бесплатный SSL-сертификат из Let's Encrypt , StartSSL или какой-то другой).

Важно различать, что делают SQL Server Configuration Manager, от конфигурации, требуемой для SQL Server. На вкладке Сертификат свойств диспетчера конфигурации в качестве SQL Server более жесткие ограничения. Выше я описываю только ограничения диспетчера конфигурации SQL Server, но можно выполнить настройку непосредственно в реестре, чтобы использовать более распространенный сертификат SSL/TLS от SQL Server. Ниже я опишу, как это можно сделать.

Что нужно сделать, можно сделать в реестре под ключом, таким как HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib, где часть MSSQL12.SQL2014 может немного отличаться в вашем случае. Диспетчер конфигурации SQL Server помогает нам установить два значения в реестре: ForceEncryption и Certificate:

 enter image description here

Значение Certificate - это хэш SHA1, который можно найти, изучив свойства сертификата:

 enter image description here

или расширенные свойства сертификата, которые вы видите при использовании certutil.exe -store My:

 enter image description here

Нужно просто скопировать значение «Cert Hash (sha1)», удалить все пробелы и поместить его в качестве значения Certificate в Реестр. После выполнения настроек и перезапуска службы Windows SQL Server в файле ERRORLOG в каталоге C:\Program Files\Microsoft SQL Server\...\MSSQL\Log появится строка, похожая на

2016-04-25 21: 44: 25.89 Сервер Сертификат [Cert Hash (sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA"] был успешно загружен для шифрования.

11
Oleg

Я хочу добавить это для будущих людей, которые могут наткнуться на аналогичную проблему, с которой я столкнулся в SQL 2016 SP2 и отказоустойчивом кластере. Добавленный в реестр отпечаток сертификата должен был быть в верхнем регистре.

Надеюсь, это поможет следующему парню.

2
Joe Mroczek

Я вошел на сервер с учетной записью домена SQL Server (пришлось временно добавить учетную запись локальным администраторам) и импортировал сертификат в личную папку учетной записи службы SQL Server. перезагрузил сервер, после чего SQL Server смог увидеть сертификат. Надеюсь, это поможет кому-то. 

0
Mary Nobakht