Только на Azure: не удалось создать безопасный канал SSL / TLS
Я запускаю приложение в приложении Azure Standard: 1 Небольшой план. Framework 4.6.1
Это приложение вызывает API-интерфейс, защищенный SSL. SSL публикуется ЦС сервера StartCom Class 1 DV, мой локальный браузер сообщает мне, что сертификат действителен.
Если я запускаю приложение на моей локальной машине, все работает. Однако при развертывании в Azure происходит сбой с следующей ошибкой:
System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка. ---> System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL / TLS.
в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar)
--- Конец внутренней трассировки стека исключений ---
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача)
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
Код:
public async Task<List<QutationOverview>> GetAll(string url, DateTime lastActionDate)
{
var result = string.Empty;
try
{
var userName = await _settingManager.GetSettingValueAsync("API.UserName");
var password = await _settingManager.GetSettingValueAsync("API.Password");
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
//Add date filter
//Always request qutations where the last action took place >= Yesterday
var requestUrl =
$"GetALL/?last_action_date={lastActionDate.AddDays(-1).ToString("yyyy-MM-dd")}&format=json";
var baseAddress = new Uri(url);
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{userName}:{password}"));
Logger.InfoFormat("GetAllQuotationsAsync for url {0}{1}", url, requestUrl);
using (var httpClient = new HttpClient {BaseAddress = baseAddress})
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
using (var response = await httpClient.GetAsync(requestUrl))
{
result = await response.Content.ReadAsStringAsync();
Logger.Info(result);
}
}
}
catch (Exception ex)
{
Logger.ErrorFormat("GetAllQuotationsAsync {0}: {1}", url, ex);
}
var data = JsonConvert.DeserializeObject<List<QutationOverview>>(result);
return data;
}
Как видите, я пропустил проверку сертификата и добавил протоколы безопасности.
Тем не менее, запрос по-прежнему не удается.
Вот капитулированный ответhttp://textuploader.com/5ers0
У вас есть идеи, как заставить это работать на Azure?