powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / HttpWebRequest GetResponse() и несварение SSL протокола
21 сообщений из 21, страница 1 из 1
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012096
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                                       | SecurityProtocolType.Tls11
                                                       | SecurityProtocolType.Tls12
                                                       | SecurityProtocolType.Ssl3
                                                       | (SecurityProtocolType)12288; // Tls13 = 12288

                var webRequest       = (HttpWebRequest)WebRequest.Create("https://shop.blackanddecker.ru/yandexmarket/index/bd");
                webRequest.Method    = "GET";
                webRequest.Accept    = "text/html, application/xhtml+xml, application/xml, gzip, deflate, br, application/x-rar-compressed, application/octet-stream, application/zip; q=0.9,image/webp,*/*;q=0.8";
                webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0";
                webRequest.AddRange(0);

                webResponse = (HttpWebResponse)webRequest.GetResponse();
                responseStream = webResponse.GetResponseStream();





и на последней строке — тадааам:
Error: The request was aborted: Could not create SSL/TLS secure channel.



ЧЯДНТ? Фреймворки пробовал от 4.5 до 4.7.2
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012126
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebRequest он, как бы, несколько legacy, хотя формально так в API не помечен. Почему бы не попробовать переделать это на более модно-молодежный HttpClient?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012141
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Хотелось бы обойтись без смены классов, там до фига такого кода, который стоит поменять но только после запуска легаси версии. Переформулирую вопрос - если на https://shop.blackanddecker.ru/yandexmarket/index/bd зайти, то что там в ответе сайта такого несовместимого с жизнью HttpWebRequest?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012241
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
fkthat,

Хотелось бы обойтись без смены классов, там до фига такого кода, который стоит поменять но только после запуска легаси версии. Переформулирую вопрос - если на https://shop.blackanddecker.ru/yandexmarket/index/bd зайти, то что там в ответе сайта такого несовместимого с жизнью HttpWebRequest?

У меня вот так работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var webRequest = (HttpWebRequest)WebRequest.Create("https://shop.blackanddecker.ru/yandexmarket/index/bd");
webRequest.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
webRequest.Method = "GET";
webRequest.Accept = "..."
webRequest.UserAgent = "....";
webRequest.AddRange(0);
using var webResponse = (HttpWebResponse)webRequest.GetResponse();
using var responseStream = webResponse.GetResponseStream();
using var tr = new StreamReader(responseStream);
Console.WriteLine(tr.ReadToEnd());


Т.ч. дело тут где-то в ServicePointManager. Надо по нему docs читать. Он, похоже, использует какой-то "особенный" TLS.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012415
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

А Вы под какой .NET собирали пример? Я полпробовал его под 4.7.2 собрать - пофигу, ошибка никуда не делась.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012418
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
fkthat,

А Вы под какой .NET собирали пример? Я полпробовал его под 4.7.2 собрать - пофигу, ошибка никуда не делась.


Проверил код fkthat , у мя тоже работает:
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012438
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень сильно подозреваю, что дело вот в этом:
https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepointmanager?view=netframework-4.7.2 The .NET Framework 4.6 includes a new security feature that blocks insecure cipher and hashing algorithms for connections. Applications using TLS/SSL through APIs such as HttpClient, HttpWebRequest, FtpWebRequest, SmtpClient, SslStream, etc. and targeting .NET Framework 4.6 get the more-secure behavior by default.

Developers may want to opt out of this behavior in order to maintain interoperability with their existing SSL3 services or TLS w/ RC4 services. This article explains how to modify your code so that the new behavior is disabled.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012502
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из статьи
автор С помощью файла AppConfig для приложения: добавьте следующую строку к файлу Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >



Не совсем ясно куда в моем клиентском app.config добавлять эту строку. Есть идеи?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012503
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема еще может быть в кривом времени на компьютере автора
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012516
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
Не совсем ясно куда в моем клиентском app.config добавлять эту строку. Есть идеи?

Я думаю, что если там явно не сказано куда, то сразу же под "<configuration>". Только если у тебя ASP.NET, то, конечно же, нужен не App.Config, а Web.config.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012526
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил

Код: c#
1.
2.
3.
4.
                const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
                const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
                AppContext.SetSwitch(DisableCachingName, true);
                AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);



прямо перед WebRequest.Create() - пофигу, при чтении результата по-прежнему получаю "The request was aborted: Could not create SSL/TLS secure channel." Фреймворк выставил в 4.8, время и дата +-1 минута совпадает с GMT+3
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012555
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,

У меня работает вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback = (_, _, _, _) => true;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 |
    SecurityProtocolType.Tls12 | (SecurityProtocolType)12288;

var webRequest = (HttpWebRequest)WebRequest.Create("https://shop.blackanddecker.ru/yandexmarket/index/bd");
webRequest.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
webRequest.Method = "GET";
using var webResponse = (HttpWebResponse)webRequest.GetResponse();
using var responseStream = webResponse.GetResponseStream();
using var tr = new StreamReader(responseStream);
Console.WriteLine(tr.ReadToEnd());


Попробуй убрать SSL3 - оно же даже ворнинг "Obsolete" на него выдает еще в VS и при компиляции.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012574
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
У меня работает вот так:


Пофигу, все та же ошибка. У меня OS - Win Server 2012R2 x64, VS2019 v16.7.7
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012593
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал под Core 3.1 собрать и запустить - ошибка поменялась - "The message received was unexpected or badly formatted."
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
using System.Net;

namespace ConsoleAppCore1
{
    class Program
    {
        static void Main(string[] args)
        {
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 |
                SecurityProtocolType.Tls12 | (SecurityProtocolType)12288;

            var webRequest = (HttpWebRequest)WebRequest.Create("https://shop.blackanddecker.ru/yandexmarket/index/bd");
            webRequest.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
            webRequest.Method = "GET";

            using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
            {
                using (var responseStream = webResponse.GetResponseStream())
                {

                }
            }
        }
    }
}
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012600
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил на dotnetfiddle под Core 3.1 - работает. Под 4.7.2 при запуске там же ловлю

Run-time exception (line 15): Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Stack Trace:

[System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
at System.Security.CodeAccessPermission.Demand()
at System.Net.ServicePointManager.set_ServerCertificateValidationCallback(RemoteCertificateValidationCallback value)
at ConsoleAppCore1.Program.Main(String[] args) :line 15


Только мне это под обычный .NET надо и на моей машине. Как можно понять что МОЕМУ .NET не нравится?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012638
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,

Вот же блин. Запустил твой крайний код у себя под 4.7.2 и все работает. Похоже у тебя дело вообще не не в коде и не в дотнет. У тебя просто в браузере вообще этот URL открывается?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012742
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

А то! В ФФ и хроме пулей открывается. Более того, эта проблема не только на моей машине меет место быть, а еще миниммум на 3.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012756
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
fkthat,

А то! В ФФ и хроме пулей открывается. Более того, эта проблема не только на моей машине меет место быть, а еще миниммум на 3.

Какие-нибудь прокси и прочие нестандартности сети у вас есть?
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012761
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Landwarrior
fkthat,

А то! В ФФ и хроме пулей открывается. Более того, эта проблема не только на моей машине меет место быть, а еще миниммум на 3.

Какие-нибудь прокси и прочие нестандартности сети у вас есть?


Нет, и моя машина с остальными 3 в разных сетях вообще.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012778
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Landwarrior#22222175]Под 4.7.2 при запуске там же ловлю

Run-time exception (line 15): Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Stack Trace:

[System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
at System.Security.CodeAccessPermission.Demand()
at System.Net.ServicePointManager.set_ServerCertificateValidationCallback(RemoteCertificateValidationCallback value)
at ConsoleAppCore1.Program.Main(String[] args) :line 15


Ты это ловишь потому что CAS (Code Access Security) . На фиддле оно там, очевидно, выполняет код без full-trust. Т.ч. это никакой информации не даёт - локально ты если и словишь ошибку, то другую.
...
Рейтинг: 0 / 0
HttpWebRequest GetResponse() и несварение SSL протокола
    #40012926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Похоже у тебя дело вообще не не в коде и не в дотнет.


Дык по-моему с самого начала было очевидно :)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / HttpWebRequest GetResponse() и несварение SSL протокола
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]