Ошибка "Сертификат, полученный от удаленного сервера, был выдан ненадежным центром сертификации" при подключении к 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 | Да | Нет | Вы подготавливаете сертификат из ненадежного источника (центр выдачи сертификатов не указан в качестве доверенного центра в доверенных корневых центрах сертификации на клиентском компьютере) | No |
2 | Выключено | Да | Самостоятельно созданный сертификат SQL Server | Самозаверяемые сертификаты не отображаются в этом хранилище. |
При установке зашифрованных подключений к SQL Server безопасный канал (Schannel) создает список доверенных центров сертификации, выполняя поиск в доверенном корневом хранилище центров сертификации на локальном компьютере. При выполнении TLS-подтверждения сервер отправляет клиенту сертификат открытого ключа. Издатель сертификата открытого ключа называется центром сертификации (ЦС). Клиент должен убедиться, что центр сертификации является доверенным. Это достигается за счет того, что открытый ключ доверенных ЦС известен заранее. Когда Schannel обнаруживает сертификат, выданный ненадежным центром сертификации, например в предыдущих двух случаях, вы получите сообщение об ошибке, указанное в разделе "Симптомы ".
Решение
Если вы намеренно используете сертификат из недоверенного центра или самозаверяющий сертификат для шифрования подключений к SQL Server, воспользуйтесь одним из следующих вариантов:
В сценарии 1 добавьте центр сертификации в хранилище доверенных корневых центров сертификации на клиентском компьютере, инициируемом зашифрованным подключением. Для этого выполните экспорт сертификата сервера и установите корневой центр сертификации (ЦС) на клиентских компьютерах, перечисленных в следующих нескольких разделах этой последовательности.
Экспорт сертификата сервера
В примере в качестве файла сертификата используется файл с именем caCert.cer. Этот файл сертификата необходимо получить с сервера. Ниже описано, как экспортировать сертификат сервера в файл.
Нажмите кнопку Пуск, выберите пункт Выполнить и введите MMC. (MMC — сокращение от Microsoft Management Console, консоль управления Microsoft.)
В MMC откройте Сертификаты.
Разверните узел Личный, затем — Сертификаты.
Щелкните правой кнопкой мыши сертификат сервера и выберите пункт "Все задачи-экспорт>".
Нажмите Далее, чтобы перейти к диалоговому окну приветствия мастера экспорта сертификатов.
Убедитесь, что нет, не экспортируйте закрытый ключ , а затем нажмите кнопку "Далее".
Убедитесь, что выбран параметр Файлы X.509 (.CER) в кодировке DER или Файлы X.509 (.CER) в кодировке Base-64, а затем нажмите кнопку Далее.
Введите имя файла экспорта.
Чтобы экспортировать сертификат, последовательно нажмите Далее и Готово.
Установка корневого центра сертификации (ЦС) на клиентском компьютере
Запустите оснастку «Сертификаты» для MMC на клиентском компьютере, а затем добавьте оснастку «Сертификаты».
В диалоговом окне "Сертификаты" выберите учетную запись компьютера и нажмите кнопку "Далее".
В области "Выбор компьютера" выберите локальный компьютер: (компьютер, на котором выполняется консоль), а затем нажмите кнопку "Готово".
Нажмите кнопку "ОК", чтобы закрыть диалоговое окно "Добавить или удалить оснастки ".
В левой области MMC разверните узел сертификатов (локальный компьютер ).
Разверните узел доверенных корневых центров сертификации, щелкните правой кнопкой мыши вложенную папку "Сертификаты", выберите "Все задачи" и выберите "Импорт".
В мастере импорта сертификатов на странице приветствия нажмите кнопку "Далее".
На странице "Файл для импорта" нажмите кнопку "Обзор".
Перейдите к расположению файла сертификата caCert.cer , выберите файл и нажмите кнопку "Открыть".
На странице "Файл для импорта" нажмите кнопку "Далее".
На странице хранилища сертификатов примите выбор по умолчанию и нажмите кнопку "Далее".
На странице "Завершение работы мастера импорта сертификатов" нажмите кнопку "Готово".
В сценариях 1 и 2 задайте для параметра сертификата сервера доверия значение true в клиентском приложении.
Дополнительные сведения о том, как это сделать, см. в следующих разделах:
Использование шифрования без проверки в собственном клиенте SQL Server
Подключение с шифрованием с помощью драйвера Microsoft JDBC для SQL Server
Примечание.
Если вы подключаетесь к SQL Server с помощью SQL Server Management Studio, перейдите на вкладку "Параметры " в окне "Подключение к серверу ", а затем выберите параметр сертификата сервера доверия.
Внимание. SSL-подключения, зашифрованные с помощью самозаверяющего сертификата, не обеспечивают надежную безопасность. Они подвержены атакам man-in-the-middle
. Не следует полагаться на протокол SSL с использованием самозаверяющих сертификатов в рабочей среде или на серверах, подключенных к Интернету.
Если конфигурация, описанная в предыдущих разделах этой статьи, является непреднамеренной, для решения этой проблемы можно использовать один из следующих вариантов:
Настройте ядро СУБД для использования шифрования в соответствии с процедурой, описанной в разделе «Включение шифрованных подключений к ядру СУБД».
Если шифрование не требуется:
Отключите параметры шифрования (при наличии) в клиентском приложении.
Отключите шифрование на стороне сервера с помощью диспетчера конфигурации SQL Server. Дополнительные сведения о том, как это сделать, см. в разделе "Настройка сервера".