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


Проверка шифрования и сертификата в Microsoft.Data.SqlClient

Скачать ADO.NET

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

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

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

Приложения могут запрашивать шифрование всего сетевого трафика с помощью Encrypt ключевого слова строка подключения или свойства подключения. По умолчанию для шифрования всего трафика соединения требуется, чтобы на сервере присутствовал сертификат. Настроив на сервере доверие клиента к сертификату, вы можете стать уязвимыми для атак типа "злоумышленник в середине". Если вы развертываете проверяемый сертификат на сервере, убедитесь, что параметры клиента Encrypt являются True и Trust Server Certificate параметры False.

Чтобы включить шифрование для использования, если сертификат не был подготовлен на сервере, Encrypt можно использовать параметры клиента и Trust Server Certificate параметры клиента. В этом случае шифрование использует самозаверяющий сертификат сервера без проверки клиентом. Эта конфигурация шифрует подключение, но не запрещает устройствам между клиентом и сервером перехватывать подключение и прокси-сервер.

Изменения в поведении проверки шифрования и сертификата

Версия 4.0 Microsoft.Data.SqlClient содержит критические изменения в параметрах шифрования. Encrypt Теперь по умолчанию используется Trueзначение .

Версия 2.0 Microsoft.Data.SqlClient представляет критические изменения в поведении Trust Server Certificate параметра. Ранее, если Encrypt задано Falseзначение, сертификат сервера не будет проверен независимо от Trust Server Certificate параметра. Теперь сертификат сервера проверяется на Trust Server Certificate основе параметра, если сервер принудительно шифруется, даже если Encrypt задано Falseзначение .

Версия 4.0

В следующей таблице описываются результаты шифрования и проверки для параметров шифрования и сертификата:

Encrypt параметр клиента Trust Server Certificate параметр клиента Force encryption Параметр сервера Результат
False False (по умолчанию) No Шифрование выполняется только для пакетов LOGIN. Сертификат не проверяется.
False False (по умолчанию) Да (Изменение поведения с версии 1.0 до версии 2.0) Шифрование всего сетевого трафика происходит только в том случае, если есть проверяемый сертификат сервера, в противном случае попытка подключения завершается ошибкой.
False Истина Да Шифрование всего сетевого трафика происходит, и сертификат не проверяется.
True (новое значение по умолчанию) False (по умолчанию) Н/П Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
True (новое значение по умолчанию) Истина Н/П Шифрование всего сетевого трафика происходит, но сертификат не проверяется.
Strict (добавлено в версии 5.0) Неприменимо Неприменимо Шифрование всего сетевого трафика происходит с помощью TDS 8, только если есть проверяемый сертификат сервера, в противном случае попытка подключения завершается ошибкой.

Внимание

В приведенной выше таблице представлено только краткое описание поведения системы в различных конфигурациях. Чтобы подключение было безопасным, убедитесь, что для клиента и сервера требуется шифрование. Кроме того, убедитесь, что сервер имеет проверяемый сертификат, а TrustServerCertificate параметр на клиенте установлен False.

Начиная с версии 5.0 Microsoft.Data.SqlClient, HostNameInCertificate является новым вариантом подключения. Проверка сертификата сервера гарантирует, что имя общего имени (CN) или альтернативное имя субъекта (SAN) в сертификате совпадает с именем сервера, к которому подключено. В некоторых случаях, например для псевдонимов DNS, имя сервера может не совпадать с CN или SAN. Значение HostNameInCertificate можно использовать для указания другого, ожидаемого CN или SAN в сертификате сервера.

Версия 2.0

Начиная с версии 2.0 при принудительном шифровании сервера клиент проверяет сертификат сервера на Trust Server Certificate основе параметра независимо от Encrypt параметра.

В следующей таблице описываются результаты шифрования и проверки для параметров шифрования и сертификата:

Encrypt параметр клиента Trust Server Certificate параметр клиента Force encryption Параметр сервера Результат
False (по умолчанию) False (по умолчанию) No Шифрование выполняется только для пакетов LOGIN. Сертификат не проверяется.
False (по умолчанию) False (по умолчанию) Да (Изменение поведения) Шифрование всего сетевого трафика происходит только в том случае, если есть проверяемый сертификат сервера, в противном случае попытка подключения завершается ошибкой.
False (по умолчанию) Истина Да Шифрование всего сетевого трафика происходит, и сертификат не проверяется.
Истина False (по умолчанию) Н/П Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Истина Истина Н/П Шифрование всего сетевого трафика происходит, но сертификат не проверяется.

Внимание

В приведенной выше таблице представлено только краткое описание поведения системы в различных конфигурациях. Чтобы подключение было безопасным, убедитесь, что для клиента и сервера требуется шифрование. Кроме того, убедитесь, что сервер имеет проверяемый сертификат, а TrustServerCertificate параметр на клиенте установлен False.

Версия 1.0

В следующей таблице описываются результаты шифрования и проверки для параметров шифрования и сертификата:

Encrypt параметр клиента Trust Server Certificate параметр клиента Force encryption Параметр сервера Результат
False (по умолчанию) False (по умолчанию) No Шифрование выполняется только для пакетов LOGIN. Сертификат не проверяется.
False (по умолчанию) False (по умолчанию) Да Шифрование всего сетевого трафика происходит, но сертификат не проверяется.
False (по умолчанию) Истина Да Шифрование всего сетевого трафика происходит, и сертификат не проверяется.
Истина False (по умолчанию) Н/П Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Истина Истина Н/П Шифрование всего сетевого трафика происходит, но сертификат не проверяется.

См. также

Строки подключения
Синтаксис строки подключения