Ошибка "Сертификат, полученный от удаленного сервера, выдан недоверенным центром сертификации" при подключении к SQL Server

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

Оригинальная версия продукта: SQL Server
Оригинальный номер базы знаний: 2007728

Симптомы

При подключении к SQL Server появляется следующее сообщение об ошибке:

Подключение к серверу успешно установлено, но затем произошла ошибка при входе. (поставщик: поставщик SSL, ошибка: 0 — цепочка сертификатов выпущена центром сертификации, не имеющим доверия). (Поставщик SqlClient данных .Net)

Кроме того, следующее сообщение об ошибке регистрируется в системном журнале Windows.

Log Name:      System  
Source:        Schannel  
Date:          10/13/2020 3:03:31 PM  
Event ID:      36882  
Task Category: None  
Level:         Error  
Keywords:  
User:        USERNAME  
Computer:     COMPUTERNAME  
Description:  
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.

Причина

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

Сценарий Шифрование на стороне сервера Шифрование на стороне клиента Тип сертификата Центр выдачи сертификатов присутствует в корневом хранилище центров сертификации
1 Да Нет Вы подготавливаете сертификат из ненадежного источника (центр выдачи сертификата не указан в качестве доверенного центра в доверенных корневых центрах сертификации на клиентском компьютере). Нет
2 Выкл. Да Самостоятельно созданный сертификат SQL Server Самозаверяемые сертификаты не отображаются в этом хранилище.

При установке зашифрованных подключений к SQL Server безопасный канал (Schannel) создает список доверенных центров сертификации, выполняя поиск в доверенном корневом хранилище центров сертификации на локальном компьютере. При выполнении TLS-подтверждения сервер отправляет клиенту сертификат открытого ключа. Издатель сертификата открытого ключа называется центром сертификации (ЦС). Клиент должен убедиться, что центр сертификации является доверенным. Это достигается за счет того, что открытый ключ доверенных ЦС известен заранее. Когда Schannel обнаруживает сертификат, выданный ненадежным центром сертификации, например в двух предыдущих случаях, появляется сообщение об ошибке, указанное в разделе Симптомы .

Решение

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

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

Экспорт сертификата сервера

В примере в качестве файла сертификата используется файл с именем caCert.cer. Этот файл сертификата необходимо получить с сервера. Ниже описано, как экспортировать сертификат сервера в файл.

  1. Нажмите кнопку Пуск, выберите пункт Выполнить и введите MMC. (MMC — это аббревиатура консоли управления).

  2. В MMC откройте Сертификаты.

  3. Последовательно разверните разделы Личные и Сертификаты.

  4. Щелкните правой кнопкой мыши сертификат сервера и выберите Все задачи —> Экспорт.

  5. Нажмите Далее, чтобы перейти к диалоговому окну приветствия мастера экспорта сертификатов.

  6. Убедитесь, что выбран параметр Нет, не экспортировать закрытый ключ , а затем нажмите кнопку Далее.

  7. Убедитесь, что выбран параметр Файлы X.509 (.CER) в кодировке DER или Файлы X.509 (.CER) в кодировке Base-64, а затем нажмите кнопку Далее.

  8. Введите имя файла экспорта.

  9. Чтобы экспортировать сертификат, последовательно нажмите Далее и Готово.

Установка корневого центра сертификации (ЦС) на клиентском компьютере

  1. Запустите оснастку «Сертификаты» для MMC на клиентском компьютере, а затем добавьте оснастку «Сертификаты».

  2. В диалоговом окне оснастки "Сертификаты" выберите Учетная запись компьютера , а затем нажмите кнопку Далее.

  3. В области Выбор компьютера выберите Локальный компьютер: (компьютер, на котором запущена консоль), а затем нажмите кнопку Готово.

  4. Нажмите кнопку ОК , чтобы закрыть диалоговое окно Добавление или удаление оснастки .

  5. В левой области MMC разверните узел Сертификаты (локальный компьютер).

  6. Разверните узел Доверенные корневые центры сертификации , щелкните правой кнопкой мыши вложенную папку Сертификаты , выберите Все задачи, а затем выберите Импорт.

  7. В мастере импорта сертификатов на странице Приветствие нажмите кнопку Далее.

  8. На странице Импортируемый файл выберите Обзор.

  9. Перейдите к расположению файла сертификата caCert.cer , выберите файл и нажмите кнопку Открыть.

  10. На странице Импортируемый файл нажмите кнопку Далее.

  11. На странице Хранилище сертификатов примите выбор по умолчанию и нажмите кнопку Далее.

  12. На странице Завершение работы мастера импорта сертификатов нажмите кнопку Готово.

В сценариях 1 и 2 задайте для параметра Trust Server Certificate значение true в клиентском приложении.

Дополнительные сведения о том, как это сделать, см. в следующих разделах:

Примечание.

Если вы используете SQL Server Management Studio, перейдите на вкладку Параметры и выберите параметр Сертификат доверия сервера на вкладке Свойства подключения.

Осторожностью: SSL-подключения, зашифрованные с помощью самозаверяющего сертификата, не обеспечивают надежную безопасность. Они подвержены атакам man-in-the-middle. Не следует полагаться на протокол SSL с использованием самозаверяющих сертификатов в рабочей среде или на серверах, подключенных к Интернету.

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

  • Настройте ядро СУБД для использования шифрования в соответствии с процедурой, описанной в разделе «Включение шифрованных подключений к ядру СУБД».

  • Если шифрование не требуется:

    • Отключите параметры шифрования (при наличии) в клиентском приложении.

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