asp.net .net-4.0 windows-server-2008-r2 tls1.2

asp.net - TLS 1.2 en.NET Framework 4.0



.net-4.0 windows-server-2008-r2 (6)

Tengo un servidor Windows Server 2008 R2 que ejecuta una docena de aplicaciones .NET Framework 4.0 WebForms, y necesito deshabilitar TLS 1.0 y versiones inferiores. Cuando hago eso, todas las conexiones seguras fallan y me vi obligado a volver a habilitar TLS 1.0. ¿Hay alguna forma de usar TLS 1.2 en un entorno de framework 4.0? Tal vez me estoy perdiendo algo?

Además, debido a las limitaciones de la versión de CMS que estamos utilizando, no podemos actualizar el Framework en este momento.


Codifiqué en VB y pude agregar la siguiente línea a mi archivo Global.asax.vb dentro de Application_Start

ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ''TLS 1.2


De acuerdo con this , necesitará .NET 4.5 instalado. Para más detalles, visite la página web. La esencia de esto es que después de tener instalado .NET 4.5, sus aplicaciones 4.0 usarán 4.5 System.dll. Puede habilitar TLS 1.2 de dos maneras:

  • Al comienzo de la aplicación, agregue este código: ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
  • Establezca la clave de registro HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/v4.0.30319: SchUseStrongCrypto en DWORD 1

La única forma en que he encontrado cambiar esto es directamente en el código:

al comienzo de su aplicación que configuró

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

debes incluir la clase system.net

Hice esto antes de llamar a un servicio web porque también tuvimos que bloquear tls1.



Realice los siguientes cambios en su Registro y debería funcionar:

1.) Claves de registro de criptografía fuertes de .NET Framework

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/.NETFramework/v4.0.30319] "SchUseStrongCrypto"=dword:00000001

2.) Claves de registro de Secure Channel (Schannel) TLS 1.2

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SecurityProviders/SCHANNEL/Protocols/TLS 1.2] [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SecurityProviders/SCHANNEL/Protocols/TLS 1.2/Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SecurityProviders/SCHANNEL/Protocols/TLS 1.2/Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001


Si no puede agregar una propiedad a la biblioteca de clases system.net .

Luego, agregue el archivo Global.asax :

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2 ServicePointManager.SecurityProtocol = (SecurityProtocolType)768; //TLS 1.1

Y puede usarlo en una función, en la línea de inicio:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;

Y está siendo útil para la pasarela de pago STRIPE , que solo es compatible con TLS 1.1, TLS 1.2.

EDITAR: después de tantas preguntas sobre .NET 4.5 está instalado en mi servidor o no ... aquí está la captura de pantalla del Registry en mi servidor de producción:

Solo tengo instalado .NET Framework 4.0.