При обращении к серверу выдает не удалось создать защищенный канал ssl/tls WS2012

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

byte[] bytes;
        using (var webClient = new WebClient())
        {

          bytes = webClient.DownloadData(url);
            
        }

Но у меня выводит ошибку

не удалось создать защищенный канал ssl/tls

Проблема не решается через ServiceProtocol , указанием tls1.2 | tls1.3 Также игнорирование сертификата тоже не помогает. Я выяснил, что ws2012 R2 может не поддержвать определенные типы шифрования, которые поддерживает сервер, но при этом браузеры без проблем работают с этим ресурсом Если браузер поставляется с своим пулом типов шифрования, то я подумал, что может быть есть способ или настройка в стандартной .net библиотеке , как добавить chiper suits при обращении к серверу, но нашел только , как это сделать с помощью curl, но тянуть зависимость ради этого не хочется, вот это решение

static byte[] GetToken(string url)

{

 //This string is for extracting libcurl and ssl libs to the bin directory.
    CurlResources.Init();
    var global = CurlNative.Init();
    var easy = CurlNative.Easy.Init();
    byte[] content;

try
{
    var dataCopier = new DataCallbackCopier();
    
    CurlNative.Easy.SetOpt(easy, CURLoption.URL, url);
    CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, dataCopier.DataHandler);
    //This string is needed when you call a https endpoint.
    //CurlNative.Easy.SetOpt(easy, CURLoption.CAINFO, CurlResources.CaBundlePath);

    //var headers = CurlNative.Slist.Append(SafeSlistHandle.Null, "Authorization: Bearer blablabla");
    //CurlNative.Easy.SetOpt(easy, CURLoption.HTTPHEADER, headers.DangerousGetHandle());
    //Your set of ciphers, full list is here https://curl.se/docs/ssl-ciphers.html
    CurlNative.Easy.SetOpt(easy, CURLoption.SSL_CIPHER_LIST, "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256");

    CurlNative.Easy.Perform(easy);

    using (var read = dataCopier.Stream)
    {
        content = read.ToArray();
    }
    
    
}
finally
{
    easy.Dispose();

    if (global == CURLcode.OK)
        CurlNative.Cleanup();
}

return content;

} Поэтому может кто то сталкивался. как это можно обойти Временным решением стало развернуть отдельный сервис и роутить запросы к серваку через него, но я тоже не хочу к нему привязывать. ибо этот код(метод imageToByte) работал 3 года с ресурсом без перебоев, до сегодня


Ответы (1 шт):

Автор решения: Dmitry Avdoshin

Решил добавив дополнительные алгоритмы шифрования в настройках(пришлось с сервера на 2012 на 2019 обновляться правда)

→ Ссылка