Включение зашифрованных соединений для ядра СУБД

Применимо к: даSQL Server (все поддерживаемые версии)

Сведения о том, как включить шифрование данных, передаваемых по коммуникационным каналам. Вы включаете зашифрованные соединения для экземпляра Компонент SQL Server Database Engine и затем с помощью диспетчера конфигурации SQL Server указываете сертификат.

Для компьютера сервера должен быть подготовлен сертификат. Чтобы подготовить сертификат на сервере, его необходимо импортировать в Windows. Для клиентского компьютера необходимо настроить доверие корневому центру сертификата.

Важно!

Начиная с SQL Server 2016 (13.x); протокол SSL больше не поддерживается. Используйте вместо него протокол TLS.

Протокол TLS

SQL Server может использовать протокол TLS для шифрования данных, передаваемых по сети между экземпляром SQL Server и клиентским приложением. Шифрование TLS выполняется на уровне протокола и доступно всем поддерживаемым клиентам SQL Server.

Протокол TLS можно использовать для проверки сервера, если для соединения клиента требуется шифрование. Если экземпляр SQL Server запущен на компьютере, которому выдан сертификат общего центра сертификации, то идентификатор компьютера и экземпляра SQL Server подтверждается цепочкой сертификатов, ведущей к доверенному корневому центру сертификации. Для выполнения такой проверки необходимо, чтобы компьютер, на котором запущено клиентское приложение, был настроен для доверия корневому центру сертификации, который использует сервер. Дополнительные сведения о сертификатах сервера и шифровании см. в разделе Использование TrustServerCertificate.

Допускается шифрование с использованием самозаверяющих сертификатов (см. следующий раздел), однако такие сертификаты обеспечивают ограниченную защиту. Уровень шифрования, который используется протоколом TLS (40- или 128-разрядное), зависит от версии операционной системы Microsoft Windows, установленной на компьютерах клиента и базы данных.

Предупреждение

Использование 40-разрядного шифрования считается небезопасным.

Предупреждение

Соединения TLS, зашифрованные с помощью самозаверяющего сертификата, не обеспечивают надежную защиту. Они уязвимы для атак "злоумышленник в середине". Не следует надеяться на защиту TLS с самозаверяющими сертификатами в рабочей среде или на серверах, подключенных к Интернету.

Шифрование TLS повышает защищенность обмена данными по сети между экземплярами SQL Server и приложениями. Однако если между SQL Server и клиентским приложением с помощью TLS шифруется весь трафик, то требуется указанная ниже дополнительная обработка.

  • Во время подключения требуется дополнительный цикл обращений по сети.
  • Пакеты, передаваемые от приложения экземпляру SQL Server, должны шифроваться клиентским стеком TLS и расшифровываться серверным стеком TLS.
  • Пакеты, передаваемые от экземпляра SQL Server приложению, должны шифроваться серверным стеком TLS и расшифровываться клиентским стеком TLS.

Сведения о сертификатах

Сертификат должен быть включен для проверки подлинности сервера. Имя сертификата должно быть полным доменным именем (FQDN) компьютера.

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

Клиент должен уметь проверить принадлежность сертификата, используемого сервером. Если у клиента есть сертификат открытого ключа центра сертификации, который подписал сертификат сервера, то дальнейшее конфигурирование не требуется. Microsoft Windows включает сертификаты открытого ключа нескольких центров сертификации. Если сертификат сервера был подписан общедоступным или частным центром сертификации, для которого у клиента нет сертификата открытого ключа, необходимо установить сертификат открытого ключа того центра сертификации, который подписал сертификат сервера.

Примечание

Чтобы использовать шифрование в отказоустойчивом кластере, необходимо установить сертификат сервера с полным именем DNS виртуального сервера на все узлы отказоустойчивого кластера. Например, для кластера, имеющего два узла с именами test1.*<your company>*.com и _test2._<your company>*.com*, и виртуального сервера virtsql*_ необходимо установить сертификат для _ _virtsql._<your company>*.com на оба узла. Для параметра ForceEncryption в поле свойства Протоколы для virtsql в окне Сетевая конфигурация SQL Server можно выбрать значение Да.

Примечание

При создании зашифрованного подключения для индексатора Поиска Azure к SQL Server в виртуальной машине Azure см. раздел Настройка подключения индексатора Поиска Azure к SQL Server в виртуальной машине Azure.

Требования к сертификатам

Для загрузки TLS-сертификата в SQL Server сертификат должен удовлетворять указанным ниже условиям.

  • Сертификат должен находиться в хранилище сертификатов локального компьютера или текущего пользователя.

  • Учетная запись службы SQL Server должна иметь соответствующее разрешение на доступ к TLS-сертификату.

  • Текущее системное время должно превышать значение свойства сертификата Действителен с и не превышать значение свойства Действителен до.

Примечание

Действительность сертификата определяется при подключении к SQL Server через клиентские соединения, при инициации которых параметр шифрования устанавливается равным true, если только он не переопределяется параметром "Доверять сертификату сервера".

  • Сертификат должен быть предназначен для проверки подлинности сервера. Для этого требуется задать свойству сертификата Улучшенный ключ значение Проверка подлинности сервера (1.3.6.1.5.5.7.3.1) .

  • Сертификат должен быть создан с помощью параметра KeySpec свойства AT_KEYEXCHANGE. Для этого требуется сертификат прежней версии. Обычно в свойстве применения ключа сертификата (KEY_USAGE) также предусмотрено шифрование ключа (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • Свойство Субъект сертификата должно указывать, что общее имя (CN) совпадает с именем узла или полным доменным именем (FQDN) сервера. При использовании имени узла в сертификате должен быть указан DNS-суффикс. Если SQL Server выполняется в отказоустойчивом кластере, то общее имя должно совпадать с именем узла или полным доменным именем виртуального сервера, а сертификаты должны быть подготовлены во всех узлах отказоустойчивого кластера.

  • SQL Server 2008 R2 и SQL Server 2008 R2 Native Client поддерживают групповые сертификаты. Интерфейс SNAC устарел и был заменен Microsoft OLE DB Driver for SQL Server и Microsoft ODBC Driver for SQL Server. Другие клиенты могут их не поддерживать.
    Групповые сертификаты невозможно выбрать с помощью диспетчера конфигурации SQL Server. Чтобы использовать групповой сертификат, нужно изменить раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib и ввести отпечаток сертификата без пробелов в качестве значения Сертификат.

    Предупреждение

    Неправильное изменение реестра может вызвать серьезные проблемы. Перед внесением изменений в реестр рекомендуется создать резервную копию всех важных данных.

Установка на одном сервере.

В SQL Server 2019 (15.x) управление сертификатами интегрировано в диспетчер конфигурации SQL Server. Диспетчер конфигурации SQL Server для SQL Server 2019 (15.x) можно использовать с более ранними версиями SQL Server. Сведения о добавлении сертификата в одном экземпляре SQL Server см. в статье Управление сертификатами (диспетчер конфигурации SQL Server).

Если вы используете версию от SQL Server 2012 (11.x) до SQL Server 2017 (14.x); и диспетчер конфигурации SQL Server для SQL Server 2019 (15.x) недоступен, выполните указанные ниже действия.

  1. В меню Пуск выберите команду Выполнить, в окне Открыть введите MMC и нажмите кнопку ОК.

  2. В консоли MMC в меню Файл выберите Добавить или удалить оснастку.

  3. В диалоговом окне Добавление или удаление оснастки нажмите кнопку Добавить.

  4. В диалоговом окне Добавление изолированной оснастки выберите Сертификаты и нажмите кнопку Добавить.

  5. В диалоговом окне Оснастка диспетчера сертификатов выберите Учетная запись компьютера и нажмите кнопку Готово.

  6. В диалоговом окне Добавить изолированную оснастку нажмите кнопку Закрыть.

  7. В диалоговом окне Добавление или удаление оснастки нажмите кнопку ОК.

  8. В оснастке Сертификаты последовательно разверните узлы Сертификаты и Личное, а затем правой кнопкой мыши щелкните Сертификаты, выберите Все задачи и нажмите кнопку Импорт.

  9. Щелкните правой кнопкой мыши импортированный сертификат, выберите пункт Все задачи, а затем нажмите кнопку Управление закрытыми ключами. В диалоговом окне Безопасность добавьте разрешение на чтение для учетной записи пользователя, используемой учетной записью службы SQL Server.

  10. Чтобы добавить сертификат на компьютер, выполните Мастер импорта сертификатов и закройте консоль MMC. Дополнительные сведения о добавлении сертификатов на компьютер см. в документации по Windows.

Важно!

В рабочей среде рекомендуется получить доверенный сертификат из центра сертификации.
В целях тестирования можно использовать самозаверяющие сертификаты. Чтобы создать самозаверяющий сертификат, см. раздел о командлете Powershell New-SelfSignedCertificate или команде certreq.

Установка на нескольких серверах

В SQL Server 2019 (15.x) управление сертификатами интегрировано в диспетчер конфигурации SQL Server. Диспетчер конфигурации SQL Server для SQL Server 2019 (15.x) можно использовать с более ранними версиями SQL Server. Сведения о добавлении сертификата в конфигурации отказоустойчивого кластера или группы доступности см. в статье Управление сертификатами (диспетчер конфигурации SQL Server).

Если вы используете версию от SQL Server 2012 (11.x) до SQL Server 2017 (14.x); и диспетчер конфигурации SQL Server для SQL Server 2019 (15.x) недоступен, выполните действия, описанные в разделе Подготовка (установка) сертификата на одном сервере, для каждого сервера.

Экспорт сертификата сервера

  1. В оснастке Сертификаты найдите сертификат в папке Сертификаты / Личное , правой кнопкой мыши щелкните Сертификат, выберите Все задачи и нажмите Экспорт.

  2. Чтобы сохранить файл сертификата в удобном расположении, выполните мастер экспорта сертификатов.

Настройка сервера

Настройте принудительное использование зашифрованных соединений на сервере.

Важно!

Учетная запись службы SQL Server должна иметь разрешения на чтение для сертификата принудительного шифрования в SQL Server. Для непривилегированной учетной записи службы разрешения на чтение необходимо добавить в сертификат. Несоблюдение этого требования может привести к сбою перезапуска службы SQL Server.

  1. В окне Диспетчер конфигурации SQL Server разверните узел Сетевая конфигурация SQL Server, щелкните правой кнопкой мыши элемент Протоколы для <server instance> , затем выберите пункт Свойства.

  2. В диалоговом окне Протоколы для <instance name> окна Свойства на вкладке Сертификат выберите необходимый сертификат из раскрывающегося списка Сертификат и нажмите кнопку ОК.

  3. На вкладке Флаги в поле ForceEncryption выберите Да, затем нажмите кнопку ОК , чтобы закрыть диалоговое окно.

  4. Перезапустите службу SQL Server .

Примечание

Чтобы обеспечить безопасный обмен данными между клиентом и сервером, настройте клиент так, чтобы он запрашивал зашифрованные соединения. Дополнительные сведения приводятся далее в этой статье.

Настройка клиента

Настройте клиент для запроса зашифрованных соединений.

  1. Скопируйте на компьютер клиента исходный сертификат или экспортированный файл сертификата.

  2. Чтобы установить корневой сертификат или экспортированный файл сертификата на клиентском компьютере, используйте оснастку Сертификаты .

  3. В диспетчере конфигурации SQL Server щелкните правой кнопкой мыши узел Конфигурация SQL Server Native Client и выберите пункт Свойства.

  4. На странице Флаги в диалоговом окне Принудительное шифрование протокола выберите Да.

Использование среды SQL Server Management Studio

Чтобы зашифровать подключение из SQL Server Management Studio:

  1. На панели инструментов обозревателя объектов нажмите кнопку Соединить и выберите Компонент Database Engine.

  2. В диалоговом окне Соединение с сервером введите все данные, необходимые для подключения, а затем нажмите Параметры.

  3. На вкладке Свойства соединения щелкните Шифровать соединение.

Протокол IPSec

Данные SQL Server можно шифровать во время передачи с помощью протокола IPSec. Протокол IPSec поддерживается операционными системами клиента и сервера. Дополнительная настройка SQL Server не требуется. Дополнительные сведения о протоколе IPSec см. в документации по Windows или сетевым протоколам.

Дальнейшие действия