Це важливе питання. Протокол SSL 3 (1996) непоправно порушений атакою Пуделя, опублікованою в 2014 році. IETF опублікував "SSLv3 НЕ МОЖЕ використовуватися" . Веб-браузери відмовляються від цього. Mozilla Firefox та Google Chrome це вже зробили.
Два чудові інструменти для перевірки підтримки протоколів у браузерах - це тестування клієнта SSL Lab та https://www.howsmyssl.com/ . Для останнього не потрібен Javascript, тому ви можете спробувати його з HttpClient .NET :
File.WriteAllText("howsmyssl-httpclient.html", new HttpClient().GetStringAsync("https://www.howsmyssl.com").Result);
Результат проклятий:
Ваш клієнт використовує TLS 1.0, який є дуже старим, можливо, сприйнятливим до атаки BEAST, і не має на ньому найкращих наборів шифрів. Додатки, такі як AES-GCM та SHA256, які замінюють MD5-SHA-1, недоступні для клієнта TLS 1.0, а також для багатьох інших сучасних шифрувальних наборів.
Це стосується. Це можна порівняти з Internet Explorer 7 2006 року.
Щоб точно перерахувати, які протоколи підтримує клієнт HTTP, ви можете спробувати тестову версію серверів нижче:
var test_servers = new Dictionary<string, string>();
test_servers["SSL 2"] = "https://www.ssllabs.com:10200";
test_servers["SSL 3"] = "https://www.ssllabs.com:10300";
test_servers["TLS 1.0"] = "https://www.ssllabs.com:10301";
test_servers["TLS 1.1"] = "https://www.ssllabs.com:10302";
test_servers["TLS 1.2"] = "https://www.ssllabs.com:10303";
var supported = new Func<string, bool>(url =>
{
try { return new HttpClient().GetAsync(url).Result.IsSuccessStatusCode; }
catch { return false; }
});
var supported_protocols = test_servers.Where(server => supported(server.Value));
Console.WriteLine(string.Join(", ", supported_protocols.Select(x => x.Key)));
Я використовую .NET Framework 4.6.2. Я виявив, що HttpClient підтримує лише SSL 3 і TLS 1.0. Це стосується. Це можна порівняти з Internet Explorer 7 2006 року.
Оновлення: виявляється, HttpClient підтримує TLS 1.1 та 1.2, але їх потрібно вмикати вручну за адресою System.Net.ServicePointManager.SecurityProtocol
. Подивитися Https://stackoverflow.com/a/26392698/284795
Не знаю, чому він використовує погані протоколи нестандартно. Це здається поганим вибором налаштування, рівнозначним серйозній помилці безпеки (я впевнений, що багато програм не змінюють за замовчуванням). Як ми можемо повідомити про це?