Solución:
De hecho, acabamos de actualizar un servicio web .NET a 4.6 para permitir TLS 1.2.
Lo que dice Artem fueron los primeros pasos que dimos. Recopilamos el marco del servicio web a 4.6 e intentamos cambiar la clave de registro para habilitar TLS 1.2, aunque esto no funcionó: la conexión todavía estaba en TLS 1.0. Además, no queríamos rechazar SLL 3.0, TLS 1.0 o TLS 1.1 en la máquina: otros servicios web podrían estar usando esto; revertimos nuestros cambios en el registro.
De hecho, cambiamos los archivos Web.Config para decirle a IIS: “hey, ejecúteme en 4.6, por favor”.
Estos son los cambios que agregamos en web.config + recompilación en .NET 4.6:
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
Y la conexión cambió a TLS 1.2, porque IIS ahora está ejecutando el servicio web en 4.6 (dicho explícitamente) y 4.6 usa TLS 1.2 de forma predeterminada.
Agregue el siguiente código antes de crear una instancia de su cliente de servicio web:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
O para compatibilidad con versiones anteriores de TLS 1.1 y anteriores:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
si está utilizando .Net antes de 4.5, no tendrá Tls12 en la enumeración, por lo que el estado se menciona explícitamente aquí
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;