В раскрывающемся списке SQL Server Configuration Manager отсутствует сертификат SSL

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

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

blank dropdown

то есть, я застрял на Шаге 2.e.2 из этот MS tutorial.

2 ответов


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

Microsoft требует (см. здесь), что имя сертификата должно быть полным доменным именем (FQDN) компьютера. это означает, что теме часть сертификат выглядит как CN = test.widows-server-test.example.com, где test.widows-server-test.example.com - это FQDN вашего компьютера. Недостаточно того, что вы используете, например CN = *.example.com и Тема Альтернативное Имя, которая содержит 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 откажется от него. См.статьи, который описывает close проблемы.

я рекомендую вам создать самозаверяющий сертификат с CN, равным FQDN SQL Server, и убедиться, что сертификат будет виден диспетчеру конфигурации SQL Server.

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

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

обновлено 2: я рассмотрел проблему еще раз подробно, и я думаю, что я нашел способ, как можно настроить общий сертификат SSL, который у вас уже есть (например, бесплатный SSL документарной давайте шифровать, StartSSL или какой-то другой).

важно различать, что делать диспетчер конфигурации SQL Server из конфигурации, требуемой SQL Server. Вкладка сертификат свойств Configuration Manager имеет более жесткие ограничения как 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 на в линия как

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


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

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