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