При обращении к серверу выдает не удалось создать защищенный канал 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 шт):
Решил добавив дополнительные алгоритмы шифрования в настройках(пришлось с сервера на 2012 на 2019 обновляться правда)