Запрос был прерван: не удалось создать безопасный канал SSL / TLS

224

Мы не можем подключиться к серверу HTTPS с помощью WebRequest из-за этого сообщения об ошибке:

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

Мы знаем, что сервер не имеет действительного сертификата HTTPS с указанным путем, но чтобы обойти эту проблему, мы используем следующий код, который мы взяли из другого сообщения StackOverflow:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

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


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

  • 3
    Проверьте это также stackoverflow.com/questions/1600743/…
  • 0
    После некоторой модификации моего кода мы попробовали его обратно на Windows XP, и он прекрасно работает ... но все же не в Windows 7. Привет!?! : О (
Показать ещё 8 комментариев
Теги:
windows-7
httpwebrequest
windows-8

34 ответа

368
Лучший ответ

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

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

// using System.Net;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons

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


ДОПОЛНЕНИЕ

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

  • 1
    Это работает и для нового класса HttpClient .
  • 1
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; один может работать тоже. Я использую Windows 8.
Показать ещё 15 комментариев
64

Решение этого в.NET 4.5 является

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Если у вас нет.NET 4.5, используйте

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
  • 4
    Спасибо! Мне нужно использовать .net 4.0 и не знал, как решить эту проблему. Это похоже на работу здесь. :)
  • 0
    Не работает для нас. Запуск .Net Framework 4.0
Показать ещё 3 комментария
27

Проблема, с которой вы сталкиваетесь, заключается в том, что пользователь aspNet не имеет доступа к сертификату. Вы должны предоставить доступ, используя winhttpcertcfg.exe

Пример настройки этого параметра: http://support.microsoft.com/kb/901183

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

EDIT: в более поздних версиях IIS эта функция встроена в инструмент диспетчера сертификатов - и к ней можно получить доступ, щелкнув правой кнопкой мыши по сертификату и используя опцию для управления секретными ключами. Подробнее здесь: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791

  • 1
    Кажется, он не работает с Windows 7 ...
  • 0
    Я попытался выполнить winhttpcertcfg.exe ... обратите внимание, что я на Windows 7. Может ли это что-то изменить?
Показать ещё 2 комментария
25

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

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

Также см. Как включить ведение журнала событий Schannel.

  • 0
    Где находится путь Schannel event logging в Windows 7-8-10 ?
  • 0
    устранять неполадки TLS / SSL программно в C #?
22

У меня была эта проблема с попыткой нажать https://ct.mob0.com/Styles/Fun.png, который представляет собой изображение, распространяемое CloudFlare на нем CDN, которое поддерживает сумасшедшие вещи, такие как SPDY и странные перенаправления сертификатов SSL.

Вместо того, чтобы указывать Ssl3, как в ответе Саймонса, я смог исправить его, перейдя к Tls12 следующим образом:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
new WebClient().DownloadData("https://ct.mob0.com/Styles/Fun.png");
  • 0
    Спасибо, Одинокий ... это безумие, потому что, кажется, есть много разных возможностей проблем в зависимости от ситуации ... И, как я вижу, нет реальной документации по этому поводу. Ну, спасибо, что указал на кого-то, кто может столкнуться с той же проблемой.
  • 0
    Это сработало для меня. Я столкнулся с ошибкой при переключении из офисной локальной сети в домашнюю сеть. Тот же код, тот же ноутбук!
Показать ещё 1 комментарий
19

Убедитесь, что настройки ServicePointManager сделаны до создания HttpWebRequest, иначе это не сработает.

Работает:

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
               | SecurityProtocolType.Tls11
               | SecurityProtocolType.Tls12
               | SecurityProtocolType.Ssl3;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://google.com/api/")

Сбой:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://google.com/api/")

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
               | SecurityProtocolType.Tls11
               | SecurityProtocolType.Tls12
               | SecurityProtocolType.Ssl3;
  • 2
    В чем разница между работами и неудачами, о которых вы упоминали выше?
  • 0
    Исправлено в редактировании, спасибо @ChandyKunhu
Показать ещё 3 комментария
14

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

ServicePointManager.Expect100Continue = true;
        ServicePointManager.DefaultConnectionLimit = 9999;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
  • 6
    Я бы не рекомендовал добавленный протокол SSL3.
  • 0
    SSL3 имеет серьезную проблему безопасности под названием «Пудель».
Показать ещё 3 комментария
14

После долгих часов с этой же проблемой я обнаружил, что учетная запись ASP.NET, на которой работает клиентская служба, не имела доступа к сертификату. Я исправил его, перейдя в пул приложений IIS, с которым работает веб-приложение, перейдя в "Дополнительные настройки" и изменив идентификатор на LocalSystem с NetworkService.

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

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

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

Изображение 5976

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

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

    public string DownloadSite(string RefinedLink)
    {
        try
        {
            Uri address = new Uri(RefinedLink);

            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            using (WebClient webClient = new WebClient())
            {
                var stream = webClient.OpenRead(address);
                using (StreamReader sr = new StreamReader(stream))
                {
                    var page = sr.ReadToEnd();

                    return page;
                }
            }

        }
        catch (Exception e)
        {
            log.Error("DownloadSite - error Lin = " + RefinedLink, e);
            return null;
        }
    }
  • 2
    Будет ли переопределять ServerCertificateValidationCallback ввести новую дыру в безопасности?
8

"Запрос был прерван: не удалось создать безопасный канал SSL/TLS". Исключение может возникнуть, если сервер возвращает ответ HTTP <4 > Неавторизованный запрос HTTP.

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

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

System.Net Information: 0 : [9840] Connection#62912200 - Received status line: Version=1.1, StatusCode=401, StatusDescription=Unauthorized.

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

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

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

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

Это действительно плохо. Он не только инструктирует .NET использовать небезопасный протокол, но это влияет на каждый новый запрос WebClient (и аналогичный), сделанный впоследствии в вашем приложении. (Обратите внимание, что входящие веб-запросы не затрагиваются в вашем приложении ASP.NET, но новые запросы WebClient, например, для общения с внешней веб-службой).

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

  • Это глобальная настройка в вашем приложении, и если у вас есть одновременная деятельность, вы не можете надежно установить ее на одно значение, выполнить свое действие и затем установить его обратно. Другое действие может иметь место во время этого маленького окна и быть затронутым.
  • Правильная настройка - оставить ее по умолчанию. Это позволяет .NET продолжать использовать все, что является самым безопасным значением по умолчанию, с течением времени и обновлять фреймворки. Установка его в TLS12 (который является самым безопасным на момент написания этой статьи) будет работать сейчас, но через 5 лет может возникнуть таинственные проблемы.
  • Если вам действительно нужно установить значение, вы должны подумать об этом в отдельном специализированном приложении или приложении домена и найти способ поговорить между ним и вашим основным пулом. Поскольку это единственное глобальное значение, попытка управлять им в пределах загруженного пула приложений приведет только к неприятностям. Этот ответ: https://stackoverflow.com/questions/3791629/set-the-securityprotocol-ssl3-or-tls-on-the-net-httpwebrequest-per-request предоставляет возможное решение с помощью специального прокси. (Примечание. Я лично не реализовал его.)
  • 1
    Вопреки вашему общему правилу, я добавлю, что есть исключение, когда вы ДОЛЖНЫ установить его на TLS 1.2, а не на запуск по умолчанию. Если вы работаете в среде, более старой, чем .NET 4.6, и на своем сервере отключаете небезопасные протоколы (SSL или TLS 1.0 / 1.1), вы не сможете отправлять запросы, если не принудительно запрограммируете программу в TLS 1.2.
7

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

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

WebRequest webRequest = WebRequest.Create(@"https://myservice/path");
webRequest.ContentType = "text/html";
webRequest.Method = "POST";
string body = "...";
byte[] bytes = Encoding.ASCII.GetBytes(body);
webRequest.ContentLength = bytes.Length;
var os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
webRequest.Timeout = 0; //setting the timeout to 0 causes the request to fail
WebResponse webResponse = webRequest.GetResponse(); //Exception thrown here ...
  • 1
    Вот Это Да! Спасибо за упоминание этого. Во-первых, не мог поверить в это и сначала попробовал множество разных вещей. Затем, наконец, установите тайм-аут на 10 секунд, и исключение исчезло! Это решение для меня. (У)
6

Другая возможная причина The request was aborted: Could not create SSL/TLS secure channel ошибку The request was aborted: Could not create SSL/TLS secure channel - это несоответствие между вашими значениями cipher_suites вашего клиентского ПК и значениями, которые сервер настроил как желающий и способный принять. В этом случае, когда ваш клиент отправляет список значений cipher_suites, которые он может принять в своем первоначальном сообщении об установлении связи/согласовании SSL "Клиент Hello", сервер видит, что ни одно из предоставленных значений не является приемлемым и может возвращать "Предупреждение" "вместо того, чтобы перейти к шагу" Приветствие Сервера "SSL-квитирования.

Чтобы изучить эту возможность, вы можете загрузить Microsoft Message Analyzer и использовать его для запуска трассировки в согласовании SSL, возникающего при попытке установить HTTPS-соединение с сервером (в вашем приложении С#).

Если вы можете сделать успешное соединение HTTPS из другой среды (например, упомянутой вами машины Windows XP, или, возможно, нажав URL-адрес HTTPS в браузере, отличном от Microsoft, который не использует настройки набора шифров ОС, например Chrome или Firefox), запустите еще одну трассировку анализатора сообщений в этой среде, чтобы зафиксировать, что происходит, когда переговоры по SSL успешно завершены.

Надеемся, вы увидите некоторую разницу между двумя сообщениями Hello Hello, которые позволят вам точно определить, что из-за неудачного согласования SSL приводит к сбою. Затем вы сможете внести изменения в конфигурацию Windows, что позволит ей добиться успеха. IISCrypto - отличный инструмент для этого (даже для клиентских компьютеров, несмотря на имя "IIS").

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

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

Здесь полная запись того, как я исследовал и решил экземпляр этого многообразия. Could not create SSL/TLS secure channel проблему Could not create SSL/TLS secure channel: http://blog.jonschneider.com/2016/08/fix-ssl-handshaking-error-in -windows.html

  • 1
    В моем случае этот ответ полезен. Кроме того, так как я подозревал, что мой клиентский компьютер пропустил некоторые комплекты шифров, я воспользовался ярлыком и установил это обновление Windows непосредственно, чтобы попытать счастья ( support.microsoft.com/en-hk/help/3161639 , требуется перезагрузка Windows) перед тем, как действительно запустить Анализатор сообщений поиска, и оказалось, что мне повезло, и это решило мою проблему, сохранив себе поиск.
  • 1
    Обратите внимание, что при тестировании HTTPS-ссылки в браузерах, таких как Firefox, даже если вы получаете другой шифр, чем тот, который предоставляется в любом данном Центре обновления Windows, Центр обновления Windows все еще стоит попробовать, поскольку установка новых шифров повлияет на согласование шифров. между клиентским ПК и сервером, тем самым увеличивая надежду найти совпадение.
6

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

Когда я создал новый проект с .NET 4.5, я, наконец, получил его для работы.

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

Странное другое сообщение об ошибке, но "Запрос был прерван: не удалось создать безопасный канал SSL/TLS". придумал эту ошибку

  • 4
    Возможно, это сработало из-за того, что разные версии .NET поддерживают разные версии протокола SSL / TLS. Дополнительная информация: blogs.perficient.com/microsoft/2016/04/tsl-1-2-and-net-support
5

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

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

Панель управления → Сеть и Интернет → Свойства обозревателя → Дополнительно

Прокрутите настройки до "Безопасность" и выберите между

  • Использовать SSL 2.0
  • Использовать SSL 3.0
  • Использовать TLS 1.0
  • Использовать TLS 1.1
  • Использовать TLS 1.2

Изображение 5977

  • 0
    какая-то проблема в том, чтобы пометить их всех?
  • 0
    никаких проблем, насколько я знаю ... за исключением того, что ssl больше не рекомендуется ... они не считаются достаточно безопасными.
Показать ещё 1 комментарий
3

System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS.

В нашем случае мы используем поставщика программного обеспечения, поэтому у нас не было доступа для изменения кода.NET. По-видимому,.NET 4 не будет использовать TLS v 1.2, если не будет изменений.

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
  • 1
    Здесь PS для быстрого редактирования: New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value "1" -Type DWord
  • 1
    Здесь PS для быстрого редактирования2: New-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value "1" -Type DWord
3

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

  • ММС
  • сертификаты
  • Развернуть до личного
  • выберите cert
  • щелкните правой кнопкой мыши
  • Все задачи
  • Управление секретными ключами
  • Добавить
3

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

<httpRuntime targetFramework="4.5.2" />

и не:

<httpRuntime targetFramework="4.6.1" />
2

У меня была такая же проблема, и я нашел, что этот ответ работал правильно для меня. Ключ - 3072. Эта ссылка содержит сведения об исправлении 3072.

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

XmlReader r = XmlReader.Create(url);
SyndicationFeed albums = SyndicationFeed.Load(r);

В моем случае два канала потребовали исправления:

https://www.fbi.gov/feeds/fbi-in-the-news/atom.xml
https://www.wired.com/feed/category/gear/latest/rss
2

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

  • 0
    Увы не для меня!
  • 0
    Это не сработало для меня
Показать ещё 1 комментарий
2

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

Как предоставить доступ ASP.NET к закрытому ключу в сертификате в хранилище сертификатов?

  • 0
    Да, то же самое. Чтобы это исправить, я сделал то, что сказал ответ Ника Готча: изменил удостоверение пула приложений на LocalSystem. Это решило это для меня.
1

Попробуй это:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
  • 0
    Я добавил эту строку. Иногда происходит сбой, и я получаю ту же ошибку. System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
1

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

https://support.microsoft.com/en-us/help/4458166/applications-that-rely-on-tls-1-2-strong-encryption-experience-connect

По сути, MS предполагает, что вам требуется более слабое шифрование, но ОС исправлена, чтобы разрешить TLS 1.2, поэтому вы получаете страшный "Запрос был прерван: не удалось создать безопасный канал SSL/TLS".

Есть три исправления.

1) Исправьте ОС с соответствующим обновлением: http://www.catalog.update.microsoft.com/Search.aspx?q=kb4458166

2) Добавьте настройку в файл app.config/web.config.

3) Добавьте параметр реестра, который уже упоминался в другом ответе.

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

  • 0
    Кроме того, убедитесь, что вы устанавливаете ServicePointManager.SecurityProtocol только один раз в своем приложении. Мы обнаружили второй вызов в нашем приложении (довольно сложный с необязательными сборками, загружаемыми во время выполнения), который устанавливал для него SSL3, который затем выдал то же сообщение об ошибке.
1

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

Идентификатор события 36888 (Schannel) поднят:

The following fatal alert was generated: 40. The internal error state is 808.

Наконец, это связано с исправлением Windows. В моем случае: KB3172605 и KB3177186

Предлагаемое решение в форуме vmware - это добавить запись в Windows. После добавления следующего реестра все работает нормально.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Диффи-Хеллмана]

"ClientMinKeyBitLength" = DWORD: 00000200

По-видимому, это связано с отсутствующим значением в рукопожатии https на стороне клиента.

Список Windows HotFix:

wmic qfe list

Решение Тема:

https://communities.vmware.com/message/2604912#2604912

Надеюсь, что это поможет.

1

В дополнение к приведенным выше ответам убедитесь, что вы импортировали сертификат CER, а НЕ файл PFX в локальное хранилище. Обычная ошибка, когда у вас есть оба файла.

  • 0
    Чего ждать? Зачем?
1

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

  • 1
    Не используйте ссылки в ответе, так как они могут не сработать в будущем, укажите на них наиболее важные аспекты в своем ответе
1

Пока это относительно "живая" ссылка, я думал, что добавлю новый вариант. Эта возможность заключается в том, что служба больше не поддерживает SSL 3.0 из-за проблемы с атакой пуделя. Ознакомьтесь с инструкцией Google по этому вопросу. Я столкнулся с этой проблемой сразу с несколькими веб-службами и понял, что что-то должно было произойти. Я переключился на TLS 1.2, и все снова работает.

http://googleonlinesecurity.blogspot.com/2014/10/this-poodle-bites-exploiting-ssl-30.html

1

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

  • 0
    Установка сертификата наверняка сработает на моем компьютере, но я пытаюсь аутентифицироваться на внешнем сертификате на сервере, к которому у меня нет доступа, кроме доступа через API с использованием WebRequest, но я должен аутентифицироваться в зоне https ...
  • 0
    Итак, загрузите их сертификат и установите в качестве доверенного на компьютер приложения.
Показать ещё 1 комментарий
0

Моя проблема была в IIS Crypto была неправильно сконфигурирована, и клиентские и серверные чипсеры не играли хорошо. Я переконфигурировал его, начав работу, и это сработало.

Запрос был прерван: не удалось создать безопасный канал SSL/TLS, но работает из браузера /POSTMAN

0

Если вы этого не хотите, не можете легко или не можете быстро исправить свой код, вместо этого вы можете принудительно использовать TLS 1.2 вашим кодом.NET в рамках.

Это не мое приложение, но оно помогло исправить наше более раннее приложение.NET 4.5 (работающее на сервере 2008r2), чтобы снова работать с Paypal Payflow Gateway. Они, должно быть, начали принудительно подключать TLS 1.2 к обратным вызовам шлюза payflow между 6/25/18 и 7/8/18.

Подробности: https://github.com/TheLevelUp/pos-tls-patcher Загрузить: https://github.com/TheLevelUp/pos-tls-patcher/releases

0

Недавно я столкнулся с тем же вопросом. Моя среда работает под.NET 4.6.1 с VB.NET. Вот как я это исправил:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf util.ValidateServerCertificate)

и функция util.ValidateServerCertificate:

Public Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
    Return True
End Function
0

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

0

По умолчанию .NET ServicePointManager.SecurityProtocol использует SSLv3 и TLS. Если вы получаете доступ к серверу Apache, есть переменная config, называемая SSLProtocol, которая по умолчанию соответствует TLSv1.2. Вы можете либо установить ServicePointManager.SecurityProtocol для использования соответствующего протокола, поддерживаемого вашим веб-сервером, либо изменить конфигурацию Apache, чтобы разрешить все протоколы, такие как SSLProtocol all.

  • 0
    НЕ использовать SSLv3 ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню