Использование шифрования без проверки
SQL Server всегда шифрует сетевые пакеты, связанные со входом в систему. Если сертификат не был предоставлен на сервере при запуске, SQL Server создает самозаверяющий сертификат, который используется для шифрования пакетов входа.
Приложения могут также запрашивать шифрование всего сетевого трафика путем использования ключевых слов строк соединения или свойств соединения. Ключевыми словами являются "Encrypt" для ODBC и OLE DB при использовании строки поставщика с IDbInitialize::Initialize или "Использовать шифрование для данных" для ADO и OLE DB при использовании строки инициализации с IDataInitialize. Это также можно настроить с помощью диспетчер конфигурации SQL Server с помощью параметра Принудительное шифрование протокола. По умолчанию для шифрования всего сетевого трафика соединения требуется, чтобы сертификат присутствовал на сервере.
Сведения о ключевых словах строки подключения см. в статье Использование ключевых слов строки подключения с SQL Server Native Client.
Чтобы включить шифрование, которое будет использоваться, если сертификат не был подготовлен на сервере, диспетчер конфигурации SQL Server можно использовать для установки параметров Принудительное шифрование протокола и Сертификат сервера доверия. В этом случае шифрование будет использовать самозаверяющий сертификат сервера, не проверяя наличия подтверждаемого сертификата сервера.
Приложения могут также использовать ключевое слово «TrustServerCertificate» или его атрибут связанного соединения, чтобы гарантировать применение шифрования. Параметры приложения никогда не снижают уровень безопасности, установленный клиентским диспетчером конфигурации SQL Server, но могут повысить его. Например, если параметр Принудительное шифрование протокола не установлен для клиента, приложение может само запросить шифрование. Чтобы гарантировать применение шифрования, даже если сертификат сервера не был предоставлен, приложение может запросить шифрование и ключевое слово «TrustServerCertificate». Однако если ключевое слово «TrustServerCertificate» не включено в конфигурации клиента, предоставление сертификата сервера по-прежнему необходимо. В следующей таблице описываются все случаи:
Параметр «Принудительное шифрование протокола» на клиенте | Параметр «Доверять сертификату сервера» на клиенте | Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных» | Строка соединения или атрибут соединения «Надежный сертификат сервера» | Результат |
---|---|---|---|---|
нет | Н/Д | Нет (по умолчанию) | Не учитывается | Шифрование отсутствует. |
нет | Недоступно | Да | Нет (по умолчанию) | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно. |
нет | Недоступно | Да | Да | Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера. |
Да | нет | Не учитывается | Не учитывается | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно. |
Да | Да | Нет (по умолчанию) | Не учитывается | Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера. |
Да | Да | Да | Нет (по умолчанию) | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка соединения завершается неудачно. |
Да | Да | Да | Да | Шифрование производится всегда, однако при этом может быть использован самозаверяющий сертификат сервера. |
Поставщик OLE DB для собственного клиента SQL Server
Поставщик SQL SERVER NATIVE CLIENT OLE DB поддерживает шифрование без проверки путем добавления свойства инициализации источника данных SSPROP_INIT_TRUST_SERVER_CERTIFICATE, которое реализуется в наборе свойств DBPROPSET_SQLSERVERDBINIT. Кроме того, добавлено новое ключевое слово строки соединения «TrustServerCertificate». Оно принимает значения «yes» и «no», значение по умолчанию — «no». При использовании компонентов службы оно принимает значения true и false, значение по умолчанию — false.
Дополнительные сведения об улучшениях, появившихся в наборе свойств DBPROPSET_SQLSERVERDBINIT, см. в статье Initialization and Authorization Properties (Свойства инициализации и авторизации).
Драйвер ODBC для собственного клиента SQL Server
Драйвер ODBC SQL Server Native Client поддерживает шифрование без проверки путем добавления функций 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».