Technical Anshu Главная › Руководства › Ошибка шифрования SQL Server
🔐 Исправление SQL-сервера

Исправить ошибку шифрования SQL Server — решение в один клик

SQL Server подключается, а затем отклоняет вход в систему, поскольку не может доверять сертификату сервера. Это не проблема сети, и ваши данные не пропали — это проблема доверия. Выполняйте исправления в том порядке, в котором они показаны в видео: быстрый вариант на стороне клиента, тот же переключатель внутри строки подключения приложения и правильное исправление на самом сервере.

✍️ Technical Anshu🔐 SQL Server🎧 Multi-Language Audio
Исправить ошибку шифрования SQL Server — решение в один клик
🎧 Многоязычное аудио: В видеоплеере нажмите [Настройки] (⚙️) ➔ [Аудиодорожка], чтобы выбрать язык.

📑Главы

  1. Ошибка входа: «Цепочка сертификатов выдана ненадежным центром»
  2. Что на самом деле означает ошибка: требуется шифрование, сертификат сервера не может подтвердить его подлинность.
  3. Быстрое исправление клиента: сертификат доверенного сервера в окне подключения SSMS
  4. То же самое исправление внутри строки подключения приложения
  5. Правильное решение — предоставить серверу настоящий сертификат, которому клиенты доверяют самостоятельно.
  6. Проверка исправления: повторно подключитесь строгим способом и убедитесь, что шифрование действительно включено.

📋 Обзор и пошаговое руководство

1

Прочтите ошибку — это проблема доверия, а не проблема сети

С вашей сетью все в порядке, сервер работает. Соединение достигло SQL-сервера, сервер предложил зашифрованный канал для входа, а ваш компьютер отказался от него, поскольку сертификат, подтверждающий личность сервера, подписан никем, кому ваш компьютер не доверяет. Полная ошибка, которую показывает SSMS:

📌 Ошибка, точно такая, как ее показывает SSMS: «Соединение с сервером было успешно установлено, но затем во время процесса входа в систему произошла ошибка. (поставщик: поставщик SSL, ошибка: 0 — цепочка сертификатов была выдана ненадежным центром.)»

По умолчанию SQL Server защищает вход в систему с помощью самозаверяющего сертификата, который он создает сам. Самозаверяющий сертификат шифрует трафик, но он не может доказать, что сервер действительно является вашим сервером, поэтому клиенты, требующие проверенного шифрования, отклоняют его. Каждое честное исправление — это одно из двух: заставить клиента сознательно принять этот конкретный сервер (шаги 2 и 3) или предоставить серверу сертификат, которому клиенты доверяют самостоятельно (шаг 4).

2

Быстрое исправление клиента в SSMS — сертификат доверенного сервера

Это быстрый маршрут, показанный на видео. Это ничего не меняет на сервере; он сообщает этому соединению принять сертификат сервера, не проверяя, кто его подписал. В окне SSMS Подключение к серверу нажмите Параметры, чтобы открыть дополнительные вкладки, перейдите на вкладку Свойства подключения, установите для шифрования значение Обязательное (или оставьте его предложенным), отметьте Доверять сертификат сервера и нажмите Подключиться. Вход в систему происходит сразу.

⚠️ Знайте, что флажок отключен: трафик остается зашифрованным, но проверка личности пропускается — клиент также примет поддельный сервер, помещенный между ними. В локальной сети вашего собственного офиса для сервера, которым вы управляете, это общепринятый ежедневный обходной путь, а на машинах для разработки и тестирования это честная сделка. Через Интернет или на рабочем сервере, на котором хранятся данные клиентов, рассматривайте его только как временный мост и завершите работу, выполнив шаг 4. Это мост, а не пункт назначения.
3

То же исправление внутри строки подключения приложения

Если происходит сбой приложения вместо SSMS, в его строке подключения находится тот же ключ. Добавьте два параметра явно: Encrypt=True включает защищенный канал, а TrustServerCertificate=True — это написание строки подключения флажка SSMS:

Connection String
Server=SQL01;Database=AppDB;User Id=appuser;Password=YourPassword;Encrypt=True;TrustServerCertificate=True;

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

📌 Почему приложения не работали без пересборки: последние драйверы изменили значения по умолчанию — Microsoft.Data.SqlClient 5.1 и новее, а драйвер ODBC 18 включил Шифрование по умолчанию. Строки подключения, в которых никогда не упоминалось шифрование, начали требовать его от серверов, чьи самозаверяющие сертификаты не могут пройти проверку. В вашей базе данных ничего не изменилось; контракт внутри строки сделал это. Явное написание настроек означает, что следующее обновление драйвера не сможет изменить поведение вашего приложения за вашей спиной.
4

Правильное решение — дайте серверу настоящий сертификат

Постоянное восстановление происходит один раз на сервере, а затем каждый клиент подключается строго без флажков и предупреждений. Сначала получите сертификат для полного DNS-имени сервера (например, sql01.company.local) от внутреннего центра сертификации или общедоступного центра сертификации с использованием Аутентификации сервера. Импортируйте его вместе с закрытым ключом в хранилище сертификатов Локальный компьютер на компьютере SQL Server. Затем щелкните сертификат правой кнопкой мыши, выберите Все задачи → Управление закрытыми ключами и предоставьте учетной записи службы SQL Server разрешение Чтение для закрытого ключа. Откройте Диспетчер конфигурации SQL Server, разверните Конфигурация сети SQL Server, щелкните правой кнопкой мыши Протоколы для MSSQLSERVER, выберите Свойства и выберите сертификат на вкладке Сертификат. На вкладке Флаги вы также можете установить для параметра ForceEncryption значение Да, чтобы каждый клиент требовал шифрования. Перезапустите службу SQL Server — изменение ничего не даст, пока вы этого не сделаете.

✅ Две ловушки, из-за которых почти каждое сообщение «это не сработало»: сертификат, имя которого не соответствует имени, по которому подключаются клиенты (подключаются по DNS-имени сервера, а не по его IP-адресу), и учетная запись службы, которая не может прочитать закрытый ключ. После перезапуска в журнале ошибок SQL Server должно быть записано, что сертификат был успешно загружен для шифрования. Если вместо этого он выдает сообщение, в первую очередь нужно посмотреть разрешение закрытого ключа.
⚠️ О ForceEncryption: установка значения «Да» на сервере приводит к принудительному шифрованию для каждого соединения — что является правильным конечным состоянием только после установки доверенного сертификата. Принудительное его использование, пока сервер все еще имеет самозаверяющий сертификат, просто приводит к тому, что каждый строгий клиент одновременно выходит из строя с той же ошибкой.
5

Проверьте исправление строгим способом

Успешный вход в систему незаметно доказывает меньше, чем думают люди, потому что некоторые комбинации настроек подключаются без реальной защиты. Докажите обе половины. Сначала подключитесь от клиента строгим способом: подключитесь, используя DNS-имя сервера — имя внутри сертификата — установите для шифрования значение «Обязательное» и оставьте флажок Доверительный сертификат сервера неактивным. Вход в систему должен завершиться успешно без предупреждения. Затем в том же сеансе спросите сервер, действительно ли соединение зашифровано, выполнив этот запрос в SSMS:

SQL Query
SELECT session_id, encrypt_option, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

encrypt_option, показывающий TRUE, является проходным баллом. Значение FALSE при рабочем входе означает, что соединение удалось установить, сняв защиту, и задание не выполнено. Это прохождение теста является настоящей финишной чертой: любой правильно настроенный клиент, включая будущие версии SSMS, теперь подключается с полной проверкой и без каких-либо специальных настроек.

🏷️Переменные и ключевые слова поиска по теме

🔍 SQLServer 🔍 CertificateNotTrusted 🔍 TrustServerCertificate 🔍 SSMS 🔍 ForceEncryption 🔍 TechnicalAnshu 🔍 SQL Server Encryption Error 🔍 Certificate Chain Not Trusted 🔍 Encrypt Connection 🔍 Connection String Fix 🔍 SQL Server Configuration Manager 🔍 SSL Provider Error
🎙️ Полная расшифровка — нажмите, чтобы развернуть.

__TOK_24__

__TOK_25__

__TOK_26__

❓ Часто задаваемые вопросы

Это руководство на 100 % бесплатно?

__TOK_27__

Могут ли новички следовать этому руководству?

__TOK_28__

Где я могу задать вопросы, если застрял?

__TOK_29__

🚀 Посмотрите полное руководство на YouTube

__TOK_30__

__TOK_31__

▶️ Посмотреть полное видео
Это руководство основано на видеоролике Technical Anshu «Исправление ошибок шифрования SQL Server» • Застряли на каком-либо этапе? Спрашивайте в комментариях к видео — там вам помогут 🙏