Поделиться через


Шифрование соединений с SQL Server

SQL Server поддерживает протокол SSL и совместим с протоколом IPSec.

Протокол SSL

Microsoft В MicrosoftSQL Server поддерживается использование протокола SSL для шифрования данных, которыми обмениваются по сети экземпляр SQL Server и клиентское приложение. Шифрование SSL выполняется на уровне протокола и доступно всем клиентам SQL Server, за исключением библиотеки DB и клиентов MDAC 2.53.

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

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

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

  • Во время подключения требуется дополнительный цикл обращений по сети.

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

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

Настройка протокола SSL для сервера SQL Server

В следующей процедуре описана настройка SSL в SQL Server.

Настройка SSL

  1. Установите сертификат в хранилище сертификатов Windows на сервере.

  2. В меню Пуск в программной группе Microsoft SQL Server выберите Средства настройки и щелкните Диспетчер конфигурации SQL Server.

  3. Разверните узел Сетевая конфигурация SQL Server, щелкните правой кнопкой мыши протоколы для нужного сервера и выберите Свойства.

    ПримечаниеПримечание

    Это раздел Протоколы для<имя_экземпляра> в левой области средства, а не отдельный протокол в правой области.

  4. На вкладке Сертификат настройте компонент Database Engine для использования сертификата.

  5. На вкладке Флаги просмотрите или задайте параметр шифрования протокола. Пакет входа всегда будет зашифрован.

    • Если параметр ForceEncryption в компоненте Database Engine установлен в Да, все данные, которыми обмениваются клиент и сервер, шифруются, поэтому клиентам, не поддерживающим шифрование, доступ запрещен.

    • Если параметр ForceEncryption компонента Database Engine установлен в Нет, клиентское приложение может запросить шифрование, однако оно не требуется.

    • После изменения значения параметра ForceEncryption необходимо перезапустить SQL Server.

    Учетные данные (в пакете входа), передаваемые при соединении клиентского приложения с SQL Server, всегда зашифрованы. SQL Server будет использовать сертификат доверенного корневого центра сертификации, если он есть. Если доверенный сертификат не установлен, то SQL Server сформирует самозаверяющий сертификат при запуске экземпляра и будет шифровать учетные данные с его помощью. Такой самозаверяющий сертификат повышает безопасность, но не обеспечивает защиту от имитации удостоверения сервером. Если используется самозаверяющий сертификат, а параметр ForceEncryption имеет значение Yes, то с помощью такого самозаверяющего сертификата будут зашифрованы все данные, переданные по сети между SQL Server и клиентским приложением.

    ПредупреждениеВнимание!

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

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

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

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

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

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

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

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

Шифрование в кластере

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

Протокол IPSec

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