tls the supported requested protocol not c# .net ssl webclient

c# - tls - the requested security protocol is not supported



Cómo especificar el protocolo SSL a usar para la clase de WebClient (1)

Tengo una aplicación que envía datos a un servidor utilizando un POST HTTPS. Yo uso un objeto System.Net.WebClient para hacer esto. Aquí hay una función que envía algunos datos:

private byte[] PostNameValuePairs(string uri, NameValueCollection pairs) { byte[] response; String responsestring = ""; using (WebClient client = new WebClient()) { client.Headers = GetAuthenticationHeader(); string DataSent = GetNameValueCollectionValuesString(pairs); try { response = client.UploadValues(uri, pairs); responsestring = Encoding.ASCII.GetString(response); } catch (Exception e) { responsestring = "CONNECTION ERROR: " + e.Message; return Encoding.ASCII.GetBytes(responsestring); } finally { _communicationLogger.LogCommunication(uri, client.Headers.ToString(), DataSent, responsestring); } } return response; }

Estamos pasando una URI que comienza con https: //

Esto ha estado funcionando muy bien durante mucho tiempo. Hoy, comenzamos a recibir el siguiente error de conexión: "La conexión subyacente se cerró: se produjo un error inesperado en un envío". Hicimos algunos problemas con el propietario del servidor, y finalmente lo redujeron a lo siguiente. Hicieron un cambio en su servidor para bloquear TLS 1.0 y dijeron que ahora debemos enviar nuestros datos utilizando TLS 1.1 o 1.2.

¿Qué necesito configurar en mi objeto WebClient (o en otra parte de mi función) para que use TLS 1.1 o 1.2 en lugar de TLS 1.0?

Estamos utilizando .NET Framework 4.5 si eso marca la diferencia.


A partir de las otras preguntas sugeridas, pude resolverlo agregando la siguiente línea a mi código:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

Esto deshabilitó TLS 1.0 del cliente y luego el servidor aceptó la conexión.

Espero que esto ayude a alguien más con el mismo problema. Aunque la respuesta es similar a esas otras preguntas, no fue obvio de las preguntas que se hicieron que este fue el caso, por lo que no siento que sea un duplicado.