У нас есть некоторый код C # (показанный ниже), работающий под .NET Compact Framework 3.5 устройства Windows CE, который работал (все еще работает в апреле 2018 года) и позволил нам сделать https вызов нашего веб-API, созданного ASP. NET Core 2.0 и размещен с веб-приложением Windows Azure. Однако в какой-то момент мы точно не знаем, когда (наверняка после августа 2018 года) тот же код из Windows CE больше не сможет совершать https-вызов веб-API https из Windows Azure. По некоторым причинам он начал возвращать исключение «Не удалось создать безопасный канал SSL / TLS».
Я полагаю, что некоторые изменения должны произойти со стороны веб-приложения Azure, которое не допускает вызов https с устройства CE, хотя он отлично работает для вызова https из браузеров ПК.
private void CallHTTPSWebApi()
{
string fullURI = "https://<our api url>";
req = (HttpWebRequest)WebRequest.Create(fullURI);
req.ContentType = "application/json;charset=utf-8";
req.Method = "GET";
try
{
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
ResponseStatusCode = ((HttpWebResponse)response).StatusCode;
using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream()))
{
string result = httpWebStreamReader.ReadToEnd();
Console.WriteLine("Response Result = " + result);
}
response.Close();
}
catch (Exception ex)
{
Console.WriteLine("Exception : " + ex.Message);
}
}
Я попытался реализовать наш собственный ICretificatePolicy, чтобы принять все проверки сертификатов из свойства ServicePointManager.CertificatePolicy, как показано ниже. Тем не менее, это все равно получить то же исключение.
public class AcceptAllCertificatePolicy : ICertificatePolicy
{
public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate
certificate, WebRequest request, int certificateProblem)
{
// Just accept.
return true;
}
}
Перед созданием веб-запроса я вставил строку.
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
Итак, есть ли какие-либо настройки или конфигурации с сайта Windows Azure, которые я могу попытаться принять по вызову https из показанного кода CE?