Buongiorno a tutti,
abbiamo un problema che riguarda il consumo di un servizio REST tramite chiamata POST, che funziona con Postman dal server stesso, da una server Windows Server 2012 R2 e .NET Framework 4.8 con TLS 1.2.
L'errore restituito è questo:
The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
Il codice utilizzato è invece questo:
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(this.Settings.Request.BaseAddress);
if (this.Settings.Authentication.Required)
{
byte[] bytes = Encoding.ASCII.GetBytes(this.Settings.Authentication.UserName + ":" + this.Settings.Authentication.Password);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(bytes));
}
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string jsonContent = File.ReadAllText(file.FullName, encoding);
this.Logs.Add("Invio del file: " + jsonContent, false);
StringContent content = new StringContent(jsonContent, encoding, "application/json");
HttpResponseMessage response = await client.PostAsync(this.Settings.Request.Endpoint, content);
if (response.IsSuccessStatusCode)
{
ResponseResult responseResult = JsonSerializer.Deserialize<ResponseResult>(response.Content.ReadAsStringAsync().Result);
switch (responseResult.ResponseType)
{
case ResponseResult.eResponseType.OK:
this.Logs.Add("File " + file.Name + " inviato correttamente: " + responseResult.detail, false);
break;
case ResponseResult.eResponseType.KO:
internalResult.SetError(responseResult.detail, (eTypeResult)8);
this.Logs.Add("File " + file.Name + " non inviato: " + responseResult.detail, true);
break;
case ResponseResult.eResponseType.WARNING:
this.Logs.Add("File " + file.Name + " inviato (WARNING) : " + responseResult.detail, false);
break;
}
}
else
{
string responseContent = await response.Content.ReadAsStringAsync();
if (string.IsNullOrWhiteSpace(responseContent))
{
responseContent = response.ToString();
}
internalResult.SetError(responseContent, (eTypeResult));
}
}
Lo stesso identico software funziona su Windows Server 2016.
Abbiamo provato a cambiare le varie chiavi di registro come indicato nei diversi documenti trovati online, ma nulla cambia e l'errore rimane.
Vorremmo capire se esiste qualche modo per gestire questa connessione su Server 2012 R2 oppure no.
Grazie