#.net #web-services #httpwebrequest #tls1.2
Вопрос:
Я искал по всему Интернету, но не смог найти надлежащего рабочего решения. Поэтому я собираюсь еще раз обратиться конкретно к своему делу.
Исходное приложение закодировано в .Net 4.0 и не имеет проблем с вызовом веб-службы. После некоторого обновления версии удаленной системы я получаю ошибку: запрос был прерван: не удалось создать безопасный канал SSL/TLS в строке 4 ниже, после некоторого поиска в Google я обнаружил, что это связано с отсутствием поддержки TLS 1.2 в исходном приложении .Net 4.0.
Изменения, которые я внес, заключались в том, чтобы дополнить решение .Net 4.7.2 и добавить строку кода 1. Но появляется новая ошибка: базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL/TLS.
Обходное решение предложило добавить строку 2, чтобы игнорировать проверку сертификата, но это, похоже, вызывает дыру в безопасности. И я прочитал один из ответов, в котором упоминается о сертификате. Но я не уверен, что именно нужно сделать. Если требуется какой-либо сертификат, он должен быть уже настроен ранее, если только что-то новое не требует нового сертификата?
// Adding TLS12 support
1.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
2.//ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
3.HttpWebRequest request = WebRequest.Create(mRestUrl) as HttpWebRequest;
4.using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
5. StreamReader reader = new StreamReader(response.GetResponseStream());
6. mReturn = reader.ReadToEnd();
}