Использование шифрования без проверки

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

Приложения могут также запрашивать шифрование всего сетевого трафика путем использования ключевых слов строк соединения или свойств соединения. Ключевыми словами являются «Encrypt» для ODBC и OLE DB при использовании строки поставщика с IDbInitialize::Initialize или «Use Encryption for Data» для ADO и OLE DB при использовании строки инициализации с интерфейсом IDataInitialize. Это можно настроить при помощи диспетчера конфигурации SQL Server, используя параметр Принудительное шифрование протокола. По умолчанию шифрование всего сетевого трафика соединения требует, чтобы сертификат был предоставлен на сервере.

Дополнительные сведения о ключевых словах строки соединения см. в разделе Использование ключевых слов строки соединения с собственным клиентом SQL Server.

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

Приложения могут также использовать ключевое слово TrustServerCertificate или его атрибут связанного соединения для гарантии того, что имеет место шифрование. Параметры приложения никогда не снижают уровень безопасности, установленный клиентским диспетчером конфигурации SQL Server, но могут повысить его. Например, если параметр Принудительное шифрование протокола не установлен для клиента, приложение может само запросить шифрование. Чтобы гарантировать шифрование, даже если сертификат сервера не был предоставлен, приложение может запросить шифрование и ключевое слово TrustServerCertificate. Однако если ключевое слово TrustServerCertificate не включено в конфигурации клиента, предоставленный сервером сертификат по-прежнему необходим. В следующей таблице описываются все случаи:

Параметр «Принудительное шифрование протокола» на клиенте

Параметр «Доверять сертификату сервера» на клиенте

Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных»

Строка соединения или атрибут соединения «Надежный сертификат сервера»

Результат

Нет

Недоступно

Нет (по умолчанию)

Не учитывается

Шифрование отсутствует.

Нет

Недоступно

Да

Нет (по умолчанию)

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Нет

Недоступно

Да

Да

Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера.

Да

Нет

Не учитывается

Не учитывается

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Да

Нет (по умолчанию)

Не учитывается

Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера.

Да

Да

Да

Нет (по умолчанию)

Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно.

Да

Да

Да

Да

Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера.

Поставщик OLE DB для собственного клиента SQL Server

Поставщик OLE DB для собственного клиента SQL Server поддерживает шифрование без проверки путем добавления свойства инициализации источника данных SSPROP_INIT_TRUST_SERVER_CERTIFICATE, которое реализовано в наборе свойств DBPROPSET_SQLSERVERDBINIT. Кроме того, добавлено новое ключевое слово строки соединения TrustServerCertificate. Оно принимает значения «yes» и «no», значение по умолчанию — «no». При использовании компонентов служб оно принимает значения true и false, значение по умолчанию — false.

Дополнительные сведения об улучшениях, появившихся в наборе свойств DBPROPSET_SQLSERVERDBINIT, см. в разделе Свойства инициализации и авторизации.

Драйвер ODBC для собственного клиента SQL Server

Драйвер ODBC для собственного клиента SQL Server поддерживает шифрование без проверки путем добавления к функциям SQLSetConnectAttr и SQLGetConnectAttr. SQL_COPT_SS_TRUST_SERVER_CERTIFICATE был добавлен, чтобы принимать значения SQL_TRUST_SERVER_CERTIFICATE_YES или SQL_TRUST_SERVER_CERTIFICATE_NO, где SQL_TRUST_SERVER_CERTIFICATE_NO является значением по умолчанию. Кроме того, добавлено новое ключевое слово строки соединения TrustServerCertificate. Оно принимает значения «yes» и «no», значение по умолчанию — «no».