Excel datasource error запрос был прерван не удалось создать защищенный канал ssl tls

Обновлено: 07.07.2024

The request was aborted: Could not create SSL/TLS secure channel.

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

Я должен упомянуть, что мы с коллегой провели тесты несколько недель назад, и это прекрасно работало с чем-то похожим на то, что я написал выше. Единственное "major difference", что мы нашли, это то, что я использую Windows 7, а он использовал Windows XP. Это что-то меняет?

Я использую клиент asmx webservice для подключения к серверной веб-службе, и у нас есть несколько сред. В одном из серверов я получаю ошибку The request was aborted: Could not create SSL/TLS secure channel ,но в других средах она работает нормально. Я уже ссылался на нижеприведенные статьи, и.

Наконец я нашел ответ (я не отметил свой источник, но это было из поиска);

В то время как код работает в Windows XP, в Windows 7, вы должны добавить это в начале:

И теперь он работает идеально.

ADDENDUM

Как упоминал Робин френч; если вы получаете эту проблему при настройке PayPal, пожалуйста, обратите внимание, что они не будут поддерживать SSL3, начиная с 3 декабря 2018 года. Вам нужно будет использовать TLS. Вот Paypal страница об этом.

В разделе Шаг 2 в разделе Дополнительная информация

Эта ошибка является общей, и существует множество причин, по которым согласование SSL/TLS может завершиться неудачей. Наиболее распространенным является недействительный или просроченный сертификат сервера, и вы позаботились об этом, предоставив свой собственный крючок проверки сертификата сервера, но это не обязательно единственная причина. Сервер может потребовать взаимной аутентификации, он может быть настроен с набором шифров, не поддерживаемых вашим клиентом, у него может быть слишком большой временной дрейф для успешного рукопожатия и многое другое.

Лучшее решение-использовать набор инструментов для устранения неполадок SChannel. SChannel-это поставщик SSPI, ответственный за SSL и TLS, и ваш клиент будет использовать его для рукопожатия. Взгляните на инструменты и настройки TLS/SSL .

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

Подход с настройкой

Кажется, все в порядке, потому что Tls1.2-это последняя версия защищенного протокола. Но я решил заглянуть глубже и ответить, действительно ли нам нужно его жестко закодировать.

Технические характеристики: Windows Server 2012R2 x64.

Но предложенное обновление windows не работает для версии R2

Но что мне помогло, так это добавить 2 значения в реестр. Вы можете использовать скрипт next PS, чтобы они добавлялись автоматически

Это как раз то, что я искал. Но все же я не могу ответить на вопрос, почему NetFramework 4.6+ не устанавливает этого . Значение протокола автоматически?

Что-то, чего не было в первоначальном ответе. Я добавил еще немного кода, чтобы сделать его пуленепробиваемым.

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

certificate importation dialog

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

В моей ситуации я не смог установить конкретный файл cookie, который ожидал сервер, что привело к тому, что сервер ответил на запрос с ошибкой 401, что, в свою очередь, привело к исключению "Could not create SSL/TLS secure channel".

Похоже, что нет никакой авторитетной документации о том, как он конкретно работает в разных версиях, но, похоже, значения по умолчанию определяются более или менее следующим образом:

Документация Microsoft настоятельно рекомендует использовать 4.7+ и системные настройки по умолчанию:

У меня была эта проблема, потому что мой web.config был:

Корень этого исключения в моем случае состоял в том, что в какой-то момент в коде вызывалось следующее:

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

Следующие два раздела реестра Windows управляют значениями cipher_suites, которые будет использовать ваш PC:

  • HKLM\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
  • HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

Этот работает для меня в MVC webclient

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

Если вы зададите значение WebRequest.Timeout в 0 , то это будет вызвано исключением. Ниже приведен код, который у меня был. (за исключением того, что вместо жестко закодированного 0 для значения таймаута у меня был параметр, который был непреднамеренно установлен в 0 ).

Я боролся с этой проблемой весь день.

Но если я понизил рейтинг до 4.0, я снова получил ту же проблему, и это было необратимо для этого проекта (даже когда я снова попытался перейти на 4.5).

В случае, если клиент является машиной windows, возможной причиной может быть то, что протокол tls или ssl, требуемый службой, не активирован.

Это можно установить в:

Панель управления -> Сеть и интернет -> параметры Интернета -> дополнительно

Прокрутите настройки вниз до "Security" и выберите один из них

  • Используйте SSL 2.0
  • Используйте SSL 3.0
  • Используйте TLS 1.0
  • Используйте TLS 1.1
  • Используйте TLS 1.2

enter image description here

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

  1. ММС
  2. сертификаты
  3. Расширяйтесь до личного
  4. выберите сертификат
  5. правая кнопка мыши
  6. Все задания
  7. Управление закрытыми ключами
  8. Добавь

Если вы запускаете свой код с Visual Studio, попробуйте запустить Visual Studio от имени администратора. Исправил эту проблему для меня.

Исправление для нас состояло в добавлении ключа SchUseStrongCrypto в реестр. Вы можете скопировать/вставить приведенный ниже код в текстовый файл с расширением .reg и выполнить его. Это послужило нашим "patch" решением проблемы.

Это исправлено для меня, добавьте сетевую службу к разрешениям. Щелкните правой кнопкой мыши на сертификате > все задачи > Управление закрытыми ключами. > Добавить. > Добавить "Network Service".

Похожие вопросы:

Я хочу реализовать метод Paypal dodirect для того, чтобы пользователь мог делать оплату непосредственно на моем сайте, а не перенаправлять ее пользователю поэтому для этого я добавил этот URL как.

Я использую клиент asmx webservice для подключения к серверной веб-службе, и у нас есть несколько сред. В одном из серверов я получаю ошибку The request was aborted: Could not create SSL/TLS secure.

Я получаю ошибку SSL при выполнении вызова SOAP с сертификатом SSL: Запрос был прерван: не удалось создать защищенный канал SSL/TLS. Самое странное, что если я загружаю сертификат в Firefox и.

The request was aborted: Could not create SSL/TLS secure channel.

Проблема в том, что сервер никогда не проверяет сертификат и выдает ошибку, указанную выше. Кто-нибудь знает, что мне делать?

Я должен упомянуть, что несколько недель назад мы с коллегой проводили тесты, и они отлично работали с чем-то похожим на то, что я написал выше. Единственное «существенное различие», которое мы обнаружили, заключается в том, что я использую Windows 7, а он - Windows XP. Это что-то меняет?

Наконец-то я нашел ответ (я не заметил свой источник, но это был поиск);

Хотя код работает в Windows XP, в Windows 7 вы должны добавить это в начале:

И теперь он отлично работает.

ДОБАВЛЕНИЕ

Как упоминал Робин Френч; Если у вас возникла эта проблема при настройке PayPal, обратите внимание, что они не будут поддерживать SSL3, начиная с 3 декабря 2018 г. Вам потребуется использовать TLS. Об этом можно прочитать на странице Paypal.

Под шагом 2 в дополнительной информации

Ошибка носит общий характер, и существует множество причин, по которым согласование SSL / TLS может завершиться неудачно. Чаще всего это недействительный или просроченный сертификат сервера, и вы позаботились об этом, предоставив свой собственный крючок для проверки сертификата сервера, но это не обязательно единственная причина. Серверу может потребоваться взаимная аутентификация, он может быть настроен с использованием наборов шифров, не поддерживаемых вашим клиентом, у него может быть слишком большой временной сдвиг для успешного рукопожатия и по многим другим причинам.

Лучшее решение - использовать набор инструментов для устранения неполадок SChannel. SChannel - это поставщик SSPI, отвечающий за SSL и TLS, и ваш клиент будет использовать его для подтверждения. Взгляните на Инструменты и настройки TLS / SSL .

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

Похоже, что нет какой-либо авторитетной документации о том, как это конкретно работает в разных версиях, но кажется, что значения по умолчанию определены более или менее следующим образом:

документация Microsoft настоятельно рекомендует использовать 4.7+ и систему значения по умолчанию:

Подход с настройкой

Кажется, все в порядке, потому что Tls1.2 - это последняя версия защищенного протокола. Но я решил посмотреть глубже и ответить, действительно ли нам нужно это жестко кодировать.

Технические характеристики: Windows Server 2012R2 x64.

Но предлагаемое обновление Windows не работает для версии R2

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

Это то, что я искал. Но все же я не могу ответить на вопрос, почему NetFramework 4.6+ не устанавливает это . значение протокола автоматически?

Чего-то не было в исходном ответе. Я добавил еще код, чтобы сделать его пуленепробиваемым.

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

В моей ситуации мне не удавалось установить конкретный файл cookie, который ожидал сервер, что привело к тому, что сервер ответил на запрос с ошибкой 401, что, в свою очередь, привело к исключению «Не удалось создать безопасный канал SSL / TLS».

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

certificate importation dialog

Следующие два раздела реестра Windows управляют значениями cipher_suites, которые будет использовать ваш компьютер:

  • HKLM \ SOFTWARE \ Policies \ Microsoft \ Cryptography \ Configuration \ SSL \ 00010002
  • HKLM \ SYSTEM \ CurrentControlSet \ Control \ Cryptography \ Configuration \ Local \ SSL \ 00010002

Это работает для меня в веб-клиенте MVC

Корнем этого исключения в моем случае было то, что в какой-то момент кода вызывалось следующее:

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

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

Если вы установите значение WebRequest.Timeout на 0 , это будет исключение. Ниже приведен код, который у меня был . (За исключением жестко запрограммированного 0 для значения тайм-аута, у меня был параметр, для которого было случайно установлено значение 0 ).

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

Я пытаюсь установить соединение SSL / TLS с тестовый сервер с самозаверяющим сертификатом. Связь по незащищенному каналу работала без проблем.

тоже пробовал это:

но каждый раз у меня есть исключение:

что я делаю не так? Почему я не могу подключиться к этому серверу (который имеет недействительный самозаверяющий сертификат)

Вы делаете это правильно с ServerCertificateValidationCallback. Это не та проблема, с которой вы столкнулись. Проблема, с которой вы столкнулись, скорее всего, версия протокола SSL/TLS.

когда мне нужен клиент, который может подключитесь к как можно большему количеству серверов (а не быть как можно более безопасным) я использую это (вместе с установкой обратного вызова проверки):

просто в качестве продолжения для тех, кто все еще сталкивается с этим – я добавил ServicePointManager.Параметры SecurityProfile, как указано в решении:

можно было бы подумать, что включение SSl3 в список SecurityProtocols сделает трюк здесь, но это не так. Единственный способ заставить соединение-включить только протокол Ssl3 и никаких других:

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

в любом случае-если вы все еще сталкиваетесь с этим против некоторых старых сайтов/серверов, стоит попробовать.

4.5.2 не работает для нас с вышеуказанной проблемой, пока 4.6.1 был в порядке

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

Windows® 8

чтобы очистить кэш DNS при использовании Windows 8, Выполните следующие действия:

на клавиатуре нажмите Win+X, чтобы открыть меню WinX.

щелкните правой кнопкой мыши командную строку и выберите Выполнить как Администратор.

выполните следующую команду:

ipconfig / flushdns

Конфигурация Windows IP успешно сбросила кэш DNS-распознавателя.

Windows® 7

чтобы очистить кэш DNS при использовании Windows 7, выполните следующие действия:

Нажмите Кнопку "Пуск".

введите cmd в меню Пуск текстовое поле поиска.

щелкните правой кнопкой мыши Командная строка и выберите Запуск от имени администратора.

выполните следующую команду:

ipconfig / flushdns

я наткнулся на эту ветку, потому что у меня также была ошибка не удалось создать безопасный канал SSL/TLS. в моем случае я пытался получить доступ к API REST конфигурации Siebel из PowerShell с помощью Invoke-RestMethod , и ни одно из предложений выше не помогло.

В конце концов я наткнулся на причину моей проблемы: сервер, с которым я связывался, требовал аутентификации сертификата клиента.

чтобы звонки работали, я должен был предоставить сертификат клиента (включая закрытый ключ) с

The request was aborted: Could not create SSL/TLS secure channel.

Проблема в том, что сервер никогда не проверяет сертификат и завершается с ошибкой выше. Кто-нибудь знает, что мне делать?

Я должен упомянуть, что мы с коллегой проводили тесты несколько недель назад, и это работало нормально с чем-то похожим на то, что я написал выше. Единственное «основное отличие», которое мы обнаружили, заключается в том, что я использую Windows 7, а он - Windows XP. Это что-то меняет?

Сейчас 2018 год, и этот вопрос был просмотрен 308,056 раз, но до сих пор нет правильного решения этой проблемы !! Я получаю эту проблему случайно, и ни одно из исправлений, упомянутых здесь или в каких-либо других темах, не решило мою проблему. @MarnixKlooster Я уже проверил все это, это не может быть проблемой с сертификатом, как будто я повторяю его, он работает. И я сомневаюсь, что смогу задать этот вопрос на SO, если кто-то не придет и не отметит его как дубликат или что-то в этом роде.

Я наконец нашел ответ (я не отметил свой источник, но это было от поиска);

Пока код работает в Windows XP, в Windows 7 вы должны добавить это в начале:

И сейчас все работает отлично.

ДОПОЛНЕНИЕ

Как упомянуто Робином Френчем; если вы столкнулись с этой проблемой при настройке PayPal, обратите внимание, что они не будут поддерживать SSL3 начиная с 3 декабря 2018 года. Вам нужно будет использовать TLS. Вот страница Paypal об этом.

Переход к SecurityProtocolType.Tls12 фактически исправил эту проблему для меня. Смотрите мой ответ ниже. SSLv3 18 лет, и теперь он подвержен эксплойту POODLE - поскольку @LoneCoder рекомендует SecurityProtocolType.Tls12 - подходящая замена для SecurityProtocolType.Ssl3 SecurityProtocolType.Tls может быть лучшей альтернативой, пока для этого не будет найден эксплойт (не все сайты поддерживают Tls12 на момент написания) Не работает на Windows Server 2008R2 (и, возможно, также на 2012) Для типов VB (так как этот ответ отображается в Google), эквивалентный код ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType) В чем разница между работами и неудачами, о которых вы упоминали выше? Точно! Когда я разместил ServicePointManager как раз перед тем, как запрос был создан, он работал для меня, Спасибо, парень, Ты спас мой день. В нашем случае запрос не удался в первый раз и работал позже. Именно из-за причины, изложенной в этом ответе!

В шаге 2 в дополнительной информации

Я не уверен, что это связано, но этот пост дал мне идею запустить VS от имени администратора при выполнении этого вызова из VS, и это решило проблему для меня. В Windows 7 и более поздних версиях сертификат должен находиться в хранилище для локального компьютера, а не для текущего пользователя, чтобы «управлять личными ключами» Да, это была моя проблема. используйте mmc.exe, добавьте оснастку сертификатов (для меня тогда я выбрал «локальный компьютер»). Щелкните правой кнопкой мыши сертификат, все задачи, управляйте закрытыми ключами. Добавьте «все» (для локального разработчика это проще всего - prod, очевидно, нужен ваш явный пул / пользователь приложения на веб-сайте IIS)

Ошибка является общей, и существует множество причин, по которым согласование SSL / TLS может завершиться неудачей. Наиболее распространенным является недействительный или просроченный сертификат сервера, и вы позаботились об этом, предоставив свой собственный инструмент проверки сертификата сервера, но это не обязательно является единственной причиной. Сервер может требовать взаимной аутентификации, он может быть настроен с набором шифров, не поддерживаемых вашим клиентом, он может иметь слишком большой временной сдвиг для успешного установления связи и многие другие причины.

Лучшее решение - использовать набор инструментов для устранения неполадок SChannel. SChannel - поставщик SSPI, отвечающий за SSL и TLS, и ваш клиент будет использовать его для рукопожатия. Посмотрите на Инструменты и настройки TLS / SSL .

Спасибо, Одинокий . это безумие, потому что, кажется, есть много разных возможностей проблем в зависимости от ситуации . И, как я вижу, нет реальной документации по этому поводу. Ну, спасибо, что указал на кого-то, кто может столкнуться с той же проблемой. Это сработало для меня. Я столкнулся с ошибкой при переключении из офисной локальной сети в домашнюю сеть. Тот же код, тот же ноутбук! Вы получаете ошибку всегда (во всех запросах) или иногда ?

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

Этот ответ должен иметь больше голосов. После недели исследований это единственное решение, которое сработало для меня. Спасибо!!

Подход с настройкой

Кажется, все в порядке, потому что Tls1.2 является последней версией безопасного протокола. Но я решил заглянуть глубже и ответить, действительно ли нам нужно это жестко закодировать.

Спецификации: Windows Server 2012R2 x64.

Но предлагаемое обновление Windows не работает для версии R2

Но что мне помогло, так это добавление 2 значений в реестр. Вы можете использовать следующий сценарий PS, чтобы они были добавлены автоматически

Это то, что я искал. Но все же я не могу ответить на вопрос, почему NetFramework 4.6+ не устанавливает это . Значение протокола автоматически?

Что-то оригинального ответа не было. Я добавил еще немного кода, чтобы сделать его пуленепробиваемым.

SSL3 имеет серьезную проблему безопасности под названием «Пудель». @PeterdeBruijn Tls and Tls11 являются устаревшими ? @Kiquenet - да. С июня 2018 года PCI (Payment Card Industries) не будет разрешать протоколы ниже TLS1.2. (Первоначально это было намечено на 06/2017, но было отложено на год)

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

диалог импорта сертификата

Клиент продолжал переустанавливать сертификат, чтобы использовать клиентскую программу. Снова и снова им придется переустанавливать сертификат перед использованием программы. Я надеюсь, что этот ответ исправит эту проблему.

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

В моей ситуации мне не удалось установить определенный файл cookie, ожидаемый сервером, что привело к тому, что сервер ответил на запрос с ошибкой 401, что, в свою очередь, привело к исключению «Не удалось создать безопасный канал SSL / TLS».

Мой планировщик задач выполняю каждый день (не выходные). Я получаю ту же ошибку, но иногда ( 2 errors in 2 months ). Когда я получаю ошибку, через несколько минут я пытаюсь снова вручную, и все в порядке.

Следующие два раздела реестра Windows управляют значениями cipher_suites, которые будет использовать ваш компьютер:

  • HKLM \ SOFTWARE \ Policies \ Microsoft \ Cryptography \ Configuration \ SSL \ 00010002
  • HKLM \ SYSTEM \ CurrentControlSet \ Control \ Cryptography \ Configuration \ Local \ SSL \ 00010002

Корень этого исключения в моем случае заключался в том, что в какой-то момент кода вызывалось следующее:

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

У меня была эта проблема, потому что мой web.config имел:

У меня возникла та же проблема, и я добавил более подробный ответ ниже, в котором подробно рассматриваются все детали этого вопроса.

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

Если вы установите значение WebRequest.Timeout в 0 , это исключение, которое выдается. Ниже приведен код, который у меня был . (За исключением того, что вместо жестко 0 заданного значения тайм-аута у меня был параметр, который был случайно установлен в значение 0 ).

Вот Это Да! Спасибо за упоминание этого. Во-первых, не мог поверить в это и сначала попробовал множество разных вещей. Затем, наконец, установите тайм-аут на 10 секунд, и исключение исчезло! Это решение для меня. (y)

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

Документация Microsoft настоятельно рекомендует использовать 4.7+ и системные настройки по умолчанию:

Читайте также: