Necesito usar TLS 1.2 para conectarme desde mi servicio web .NET a otro que forzará TLS 1.2. Encontré un recurso que decía que .NET 4.6 usa TLS 1.2 de forma predeterminada, por lo que parecía la solución más fácil. Actualicé .NET framework en el servidor y reinicié. En IIS intenté crear un grupo de aplicaciones usando .NET 4.6 pero 4.0 era la única opción. Luego encontré algo que decía que todavía diría 4.0 porque 4.6 es una actualización "en su lugar" para .NET 4.0. Así que pensé que tal vez había terminado. Sin embargo, en una página de error que obtuve por razones no relacionadas, decía Microsoft .NET Framework Version:4.0.30319
que parece que no me he actualizado correctamente. ¿Algún consejo sobre cómo asegurarme de que mi grupo de aplicaciones esté usando .NET 4.6 o, de manera más general, cómo habilitar TLS 1.2?
99
Respuestas:
De hecho, acabamos de actualizar un servicio web .NET a 4.6 para permitir TLS 1.2.
Lo que Artem está diciendo 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 la recompilación web.config + 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.
fuente
Agregue el siguiente código antes de crear una instancia de su cliente de servicio web:
O para compatibilidad con versiones anteriores de TLS 1.1 y anteriores:
fuente
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;
fuente
Se necesitan tres pasos:
Marque explícitamente SSL2.0, TLS1.0, TLS1.1 como prohibido en su servidor, agregando
Enabled=0
yDisabledByDefault=1
a su registro (la ruta completa esHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
). Ver pantalla para detallesHabilite explícitamente
TLS1.2
siguiendo los pasos de 1. Solo useEnabled=1
yDisabledByDefault=0
respectivamente.NOTA: verificar la versión del servidor:
Windows Server 2003
no es compatible con elTLS 1.2
protocoloHabilite
TLS1.2
solo en el nivel de la aplicación, como @John Wu sugirió anteriormente.System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Espero que esta guía te ayude.
ACTUALIZACIÓN Como mencionó @Subbu: Guía oficial
fuente
Para mí a continuación funcionó:
Paso 1: descargó e instaló el instalador web exe de https://www.microsoft.com/en-us/download/details.aspx?id=48137 en el servidor de aplicaciones. Reinició el servidor de aplicaciones una vez completada la instalación.
Paso 2: agregaron los cambios a continuación en web.config
<system.web> <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 --> <!--Added this httpRuntime --> <httpRuntime targetFramework="4.6" /> </system.web>
Paso 3: Después de completar los pasos 1 y 2, dio un error, " WebForms UnobtrusiveValidationMode requiere un ScriptResourceMapping para 'jquery'. Agregue un ScriptResourceMapping llamado jquery (distingue entre mayúsculas y minúsculas) " y para resolver este error, agregué la siguiente clave en la configuración de la aplicación en mi archivo web.config
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
fuente
PowerBI Embedded requiere TLS 1.2.
La respuesta anterior de Etienne Faucher es su solución. enlace rápido a la respuesta anterior ... enlace rápido a la respuesta anterior ... ( https://stackoverflow.com/a/45442874 )
PowerBI requiere TLS 1.2 Junio de 2020: esta es su respuesta : considere forzar su tiempo de ejecución de IIS a obtener hasta 4.6 para forzar el comportamiento predeterminado de TLS 1.2 que está buscando en el marco. La respuesta anterior le brinda una solución de solo cambio de configuración.
Síntomas : Conexión TCP / IP cerrada forzada y rechazada a Microsoft PowerBI Embedded que aparece de repente en todos sus sistemas.
Estas llamadas PowerBI simplemente dejan de funcionar con un error de cierre duro de TCP / IP, como si un firewall bloqueara una conexión. Por lo general, los pasos de autenticación funcionan; es cuando ingresa al servicio para un espacio de trabajo específico e informa las identificaciones que falla.
Esta es la nota de 2020 de Microsoft PowerBI sobre TLS 1.2 requerido
PowerBIClient
métodos que muestran este problema
GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler Force TLS 1.1 TLS 1.2
Términos de error de búsqueda para ayudar a las personas a encontrar esto: System.Net.Http.HttpRequestException: se produjo un error al enviar la solicitud System.Net.WebException: la conexión subyacente se cerró: se produjo un error inesperado en un envío. System.IO.IOException: No se pueden leer los datos de la conexión de transporte: el host remoto cerró a la fuerza una conexión existente.
fuente