Фаза установки конфигурации завершается сбоем

Фаза установки конфигурации завершается сбоем

Симптомы

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

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

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

Когда я запускаю веб-службу из визуальной студии на встроенном сервере, я могу запустить службу и получить доступ к базе данных.

Но когда я разместил веб-службу на iis 7.5, я могу запустить веб-службу, но не могу получить доступ к базе данных. Я получаю следующую ошибку.

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

Я понятия не имею, как это решить. Пожалуйста, помогите мне в этом отношении.

Скорее всего, в доверенном корневом хранилище вашей виртуальной машины SQL не установлен сертификат, подписанный ЦС.

Если у вас есть Encrypt=Trueстрока подключения, либо отключите ее (не рекомендуется), либо добавьте в строку подключения следующее:

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

В долгосрочной перспективе я бы рекомендовал использовать Let’s Encrypt, чтобы бесплатно получить подписанный сертификат CA от известного доверенного центра сертификации и установить его на виртуальную машину. Не забудьте настроить автоматическое обновление. Вы можете прочитать больше по этой теме в книгах по SQL Server в Интернете в разделах «Иерархия шифрования» и «Использование шифрования без проверки».

У меня есть веб-сайт ASP.Net Webforms, работающий в IIS на Windows Server. Также на этом сервере стоит SQL-сервер.

Все работает нормально с сайтом, но теперь я вижу проблемы с использованием DataAdapter для заполнения таблицы.

Итак, вот некоторый код, обратите внимание, что это просто базовая схема кода, поскольку фактический код содержит конфиденциальную информацию.

Вышеупомянутое находится в библиотеке и называется так на сайте веб-форм.

var Summaries = MyLibrary.Fetch(ConnectionString, 1, 111, false);

Итак, как я уже сказал, все работало нормально. Теперь, внезапно вышеупомянутое перестало работать, и Summaries всегда пуст.

Для расследования я попробовал следующее.

Создал тест с использованием xUnit с теми же параметрами, что и на сайте. Они были зафиксированы во время отладки, чтобы гарантировать соответствие. Результат вернул 1 элемент.

Затем я запустил хранимую процедуру в SQL Management Studio, и она сопоставила тест xUnit, вернув 1 элемент.

Затем я проверил SQL Profiler, и здесь все показалось немного странным. Когда веб-формы вызывали библиотеку, в трассировке ничего не фиксировалось.

Вышеупомянутая строка сгенерировала следующее исключение.

Возникло исключение: «Microsoft.Data.SqlClient.SqlException» в Microsoft.Data.SqlClient.dll. Соединение с сервером было успешно установлено, но затем во время входа в систему произошла ошибка. (поставщик: поставщик SSL, ошибка: 0 — цепочка сертификатов была выпущена центром, которому не доверяют.)

Осмотрев стек, я увидел много ответов, в которых говорилось, что мне нужно установить сертификат.

У меня вопрос: если это так, то почему и почему именно сейчас? Ничего не изменилось в коде с того момента, когда он работал до сих пор. Веб-сайт и SQL-сервер находятся на одном сервере Windows. Кроме того, почему тест xunit работает без него, а веб-сайт — нет, когда я отлаживаю на одной машине!

Единственные элементы, которые я сейчас изменил, — это установка .Net 6 и вторник патча, в результате которого были обновлены некоторые обновления и перезапущен сервер.

Моя база данных — SQLExpress 2016SP1

Я могу добавить миграцию, но когда я выдаю

В консоли диспетчера пакетов я получаю сообщение об ошибке

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

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

DbContext — это

Если я жестко закодирую строку подключения внутри реализации IDesignTimeDbContextFactory, я могу запустить миграции.

Жесткое кодирование строки подключения нежелательно, поэтому я хотел бы получить лучший ответ.

Мне непонятно, зачем нужна реализация IDesignTimeDbContextFactory. (без него моя миграция не удалась)

Я обновил свои Startup.cs и Program.cs, чтобы они соответствовали таковым для вновь созданной программы, реализация которой не требуется.

Services.AddMvc (). SetCompatibilityVersion (CompatibilityVersion.Version_2_1); }

Я обновился до VS2017 версии 15.7.3. Когда я решил повторить проблему и создать первую миграцию, личный кабинет отобразил сообщение

Читать также:  Почему не отображается сертификат вакцинации на госуслугах от ковид

The configuration file ‘appsettings.json’ was not found and is not optional

Когда я всегда отмечал эту копию файла, работали и добавление-миграция, и база данных обновления.

3 ответа

Если вы используете SMO, вы можете сделать следующий код:

SqlConnectionInfo sci = new SqlConnectionInfo();
sci.ConnectionProtocol = NetworkProtocol.NamedPipes;
sci.EncryptConnection = false;

// задайте для EncryptConnection значение false при использовании SMO ​​sqlserver, когда для свойства установлено значение true, необходимо установить servercertificate для экземпляра сервера SQL.

Эта ошибка возникла после установки программы, которая изменяет настройки интернет-протокола вашего компьютера. Недавно у меня возникла та же проблема после установки диспетчера загрузки через Интернет, потому что IDM изменил настройки IP, и эта ошибка возникает, поэтому после удаления IDM с моего ПК и перезагрузки ПК проблема решается. ТАК Удалите все приложения, которые изменили настройки интернет-протокола, такие как диспетчер загрузки Интернета.

5 Сен 2013 в 13:03

Подключение с шифрованием

В примерах из этой статьи описывается использование свойств строки соединения, которые разрешают приложениям использовать шифрование TLS в приложении Java. Дополнительные сведения об этих новых свойствах строки соединения, например encrypt, trustServerCertificate, trustStore, trustStorePassword и hostNameInCertificate, см. в разделе Задание свойств соединения.

Драйвер не может установить безопасное соединение с SQL Server с помощью шифрования Secure Sockets Layer (SSL). Ошибка

Недавно я использовал проект SSH для подключения к версии SQL Server 2012. Tomcat сообщил об этой ошибке, как только она началась:

com.microsoft.sqlserver.jdbc.SQLServerException: драйвер не может установить безопасное соединение с SQL Server с использованием шифрования Secure Sockets Layer (SSL). Ошибка: «Неподдерживаемый CurveId: 29» 。 at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1368) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1412) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1058) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185)Caused by: javax.net.ssl.SSLHandshakeException: Unsupported curveId: 29 at com.sun.net.ssl.internal.ssl.HandshakeMessage$ECDH_ServerKeyExchange. (HandshakeMessage.java:905) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:198) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:943) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1379) . 7 more

Позвольте мне сначала поговорить об этом Моя основная ситуация здесь: SSH-проект, использующий 64-битный jdk версии 1.6, получает доступ к локальной базе данных SQL Server 2005. Все нормально. Доступ к другой версии 2012 базы данных SQL Server в локальной сети сообщает об указанной выше ошибке. Сервер, на котором расположена база данных 2012, — это SQL. Сервер разрешает удаленные подключения, и мой локальный брандмауэр был отключен. Брандмауэр сервера также отключен. У меня система win7 64-битная.

Просто найдите «Неподдерживаемый CurveId: 29» на Baidu. Их относительно мало, и в основном нет вопросов или ответов. Таким образом, никаких результатов не было найдено для этой части.

С другой стороны, Baidu только что много раз искал проблему «драйвер не может установить безопасное соединение с SQL Server с использованием шифрования Secure Sockets Layer (SSL)», но есть два решения: одно Это добавить пакет jar bcprov-ext-jdk15on-1.54, а затем изменить файл конфигурации, один из них — изменить версию JDK. Я не хочу изменять версию JDK (в настоящее время 1.6, ее нужно изменить на 1.7 или выше), потому что после изменения многие проекты будут испорчены. Решить проблему также очень сложно; Изменение файла конфигурации по-прежнему не имеет никакого эффекта.

Позже я спросил своих коллег, можно ли их проект нормально подключить. Они ответили «да» и спросили, что было настроено. Они сказали, что удалили драйвер SQL Server 2005 и сохранили только драйвер sqljdbc4. Остальные пропали. Я удалил его, как обычно, и все еще сообщил об ошибке.

Позже я искал много грязных методов, и это не сработало.Эта статьяРешено по ошибке. В этой статье я хочу изменить jdk, но я не изменил его. Скажем добавить пакет jar следующим образом:

Добавлен согласно этой инструкции, и, наконец, проблема была решена.

Чтобы понять, какая конфигурация в основном решает проблему, я удалил исходную конфигурацию одну за другой и попробовал одну за другой. Было обнаружено, что в каталоге установки jdk jre lib ext отсутствует пакет sunjce_provider.jar. Чтобы убедиться в этом, я также намеренно проверил jdk нескольких коллег, у их jdk был этот файл в том же каталоге, а у моего — нет. Пока что он полностью понимает причину этой проблемы.

Наконец, суммируйте методы, которые я считаю полезными для решения этой проблемы:

2. Если вы используете C3P0 для подключения к базе данных, проверьте, достаточно ли количество подключений, вы можете обратиться к Эта Для просмотра.

3. Удалите все файлы в рабочем каталоге Tomat Underwater, чтобы избежать воздействия временных файлов и файлов кэша.

Читать также:  Сертификаты на продукцию Металлопрофиль

4. Убедитесь, что в проекте есть только один пакет драйверов, который может подключаться к более поздней версии SQL Server (не только для удаления проекта, но и для удаления каталога lib tomcat, убедитесь, что используется только пакет jar)

5. Проверьте, отсутствует ли jar-пакет sunjce_provider.jar в установочном каталоге jdk jre lib ext

Вышеприведенные пять методов предназначены только для ситуации, о которой я упоминал выше, потому что я использую тот же код для подключения к SQL Server той же версии 12. во внешней сети, но все еще сообщаю об этой ошибке. В настоящее время решение не найдено. Пожалуйста, дайте мне знать, если у вас есть решение, спасибо!

Воспроизведено решение аналогичной проблемы: решите проблему, заключающуюся в том, что драйвер, соединяющий java с базой данных SQLSERVER, не может установить безопасное соединение с SQL Server с помощью шифрования Secure Sockets Layer (SSL). Ошибка: не удалось создать пару ключей DH «

Этот вопрос о ключе безопасности между JDK и базой данных:

Моя система 64-битная, и эта проблема не возникала на 32-битных машинах раньше:

Как только программа подключится к базе данных, она сообщит com.microsoft.sqlserver.jdbc.SQLServerException: драйвер не может установить безопасное соединение с SQL Server с помощью шифрования Secure Sockets Layer (SSL). Ошибка: «java.lang.RuntimeException: не удалось создать пару ключей DH». Такая ошибка.

JDK использует 1.6, чтобы сообщить об этой ошибке, а 1.7 не сообщает об этой ошибке.

1. Загрузите два пакета jar

Адрес для загрузки: http://download.csdn.net/detail/cw_hello1/9557049

2. Скопируйте два загруженных файла JAR в: установочный каталог JDK jre lib ext, например, мой — D: Program Files (x86) java JDK1.6 jre lib ext

3. Откройте файл java.security: файл java.security в каталоге установки JDK jre lib security.

Найдите security.provider.1 = sun.security.provider.Sun и замените

Перезапустите программу для подключения к базе данных.

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

2. Некоторые говорят, что вам все еще нужно добавить пакет mchange-commons-java-0.2.3.4.jar для его решения.

3. Несмотря на то, что к перепечатанному контенту подключены два пакета jar, он находится на CSDN и требует баллов. Если у вас есть аккаунт и баллы, вы можете перейти по ссылке или вложения, если у вас нет баллов.

Есть два способа загрузки, как показано на рисунке:

Фаза установки конфигурации завершается сбоем

Один из них — «щелкните банку в красном поле посередине, чтобы открыть окно сохранения», а другой — скопировать содержимое в текстовое поле ниже и поместить его в файл pom.xml проекта maven, чтобы позволить maven автоматически отключиться.

На этом сайте есть много и полных пакетов jar, и это бесплатно. Если вы не можете найти пакет jar, вы не можете искать его здесь.

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

Если свойство encrypt установлено в значение true, а свойство trustServerCertificate — в значение true, то драйвер Microsoft JDBC Driver для SQL Server не будет проверять TLS-сертификат SQL Server. Этот параметр обычно используется, чтобы разрешить подключения в тестовой среде, например когда у экземпляра SQL Server есть только самозаверяющий сертификат.

В следующем примере кода показано, как можно задать свойство trustServerCertificate в строке подключения:

Если свойство encrypt установлено как true, а свойство trustServerCertificate — как false, то драйвер Microsoft JDBC Driver для SQL Server будет проверять TLS-сертификат SQL Server. Проверка сертификата сервера является частью TLS-подтверждения и гарантирует, что для подключения выбран правильный сервер. Чтобы проверить сертификат сервера, при подключении необходимо явно предоставить доверенный материал с помощью свойств подключения trustStore и trustStorePassword или неявно, с помощью базового доверенного хранилища JVM по умолчанию.

Свойство trustStore указывает путь (включая имя файла) к файлу сертификата trustStore, который содержит список сертификатов, которым доверяет клиент. Свойство trustStorePassword задает пароль, используемый для проверки целостности данных trustStore. Дополнительные сведения об использовании доверенного хранилища виртуальной машины Java по умолчанию см. в статье Настройка шифрования на клиенте.

В следующем примере кода показано, как в строке подключения можно задать свойства trustStore и trustStorePassword:

Драйвер JDBC предоставляет дополнительное свойство hostNameInCertificate, которое определяет имя узла сервера. Значение этого свойства должно совпадать со значением свойства subject сертификата.

В следующем примере кода показано, как в строке подключения можно использовать свойство hostNameInCertificate:

Читать также:  Кто в россии может выдавать сертификаты на продукцию

Кроме того, можно задать значение свойству подключения с помощью соответствующих методов задания, предоставляемых классом SQLServerDataSource.

Причина

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

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

Решение

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

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

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

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

Нажмите кнопку Начните, а затем запустите и введите MMC. (MMC — это аббревиатура консоли управления Майкрософт.)

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

Расширение персональных и затем сертификатов.

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

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

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

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

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

Нажмите кнопку Далее и нажмите кнопку Готово, чтобы экспортировать сертификат.

Установка органа корневого сертификата (CA) на клиентской машине

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

В диалоговом окне «Сертификаты» выберите учетную запись Компьютера и выберите Далее.

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

Выберите ОК, чтобы закрыть диалоговое окно Add или Remove Snap-ins.

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

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

В мастере импорта сертификатов на странице Welcome выберите Далее.

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

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

На странице Файл импортировать выберите Далее.

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

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

Для сценариев 1 и 2. Установите параметр сертификата trust Server до true в клиентских приложениях.

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

Использование шифрования без проверки в SQL Server Native Client.

Подключение с шифрованием с помощью драйвера Microsoft JDBC для SQL Server.

Использование шифрования с помощью Sqlclient.

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

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

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *