Ответ 1
После сообщения в комментариях я могу предположить, что ваша основная проблема - это часть CN используемого вами сертификата. Чтобы иметь успешную связь TLS для IIS Server, у вас нет таких сильных ограничений, как SQL Server.
Microsoft требует (см. здесь), что Имя сертификата должно быть полным доменным именем (FQDN) компьютера. Это означает, что часть сертификата Тема выглядит как CN = test.widows-server-test.example.com, где тест. widows-server-test.example.com - полное доменное имя вашего компьютера. Недостаточно того, что вы используете, например, 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 отменит его. См. статью, в которой описаны тесные проблемы.
Я рекомендую вам создать самозаверяющий сертификат с 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
:
Значение Certificate
представляет собой SHA1-хэш, который можно найти, исследуя свойства сертификата:
или расширенные свойства сертификата, которые вы видите по использованию certutil.exe -store My
:
Нужно просто скопировать значение "Cert Hash (sha1)", удалить все пробелы и поместить в значение Certificate
значение в реестре. После внесения настроек и перезапуска службы Windows Server SQL вы увидите в файле ERRORLOG
в каталоге C:\Program Files\Microsoft SQL Server\...\MSSQL\Log
строку типа
2016-04-25 21: 44: 25.89 Сервер Сертификат [Cert Hash (sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA" ] был успешно загружен для шифрования.