¿Hay implementación .NET de TLS 1.2?

Como acabo de descubrir que RFC 5425 requiere el uso de TLS 1.2, y que .NET aún no lo admite, me pregunto si hay alguna implementación, posiblemente de código abierto, del protocolo TLS 1.2, como se define en RFC 5246.

Gracias.

Acabo de descubrir que .Net Framework 4.5 ahora es compatible con TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx

Sí, aunque debe activar TLS 1.2 manualmente en System.Net.ServicePointManager.SecurityProtocol

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse(); var body = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

Su cliente está utilizando TLS 1.2, la versión más moderna del protocolo de cifrado


Fuera de la caja, WebRequest usará TLS 1.0 o SSL 3 .

Su cliente está usando TLS 1.0, que es muy antiguo, posiblemente susceptible al ataque BEAST, y no tiene las mejores suites de cifrado disponibles en él. Las adiciones como AES-GCM y SHA256 para reemplazar MD5-SHA-1 no están disponibles para un cliente de TLS 1.0, así como para muchas más suites de cifrado modernas.

Puede utilizar la configuración de registro SchUseStrongCrypto para requerir que todas las aplicaciones .NET usen TLS 1.2 en lugar de 1.0 de manera predeterminada.

 Windows Registry Editor Version 5.00 [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 

Solucioné mi problema cambiando al .Net Framework más reciente. Entonces su Marco objective establece su Protocolo de Seguridad.

cuando tienes esto en Web.config

    

lo obtendrás por defecto:

 ServicePointManager.SecurityProtocol = Ssl3 | Tls 

cuando tienes esto en Web.config

    

lo obtendrás por defecto:

 ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls 

Si está tratando con versiones anteriores de .NET Framework, entonces el soporte para TLS 1.2 está disponible en nuestro producto SecureBlackbox en los componentes del cliente y del servidor. SecureBlackbox contiene su propia implementación de todos los algoritmos, por lo que no importa qué versión de framework basado en .NET use (incluido .NET CF): tendrá TLS 1.2 con las últimas incorporaciones en todos los casos.

Tenga en cuenta que SecureBlackbox no agregará mágicamente TLS 1.2 a las clases de infraestructura, sino que tendrá que usar las clases y los componentes de SecureBlackbox explícitamente.

Simplemente descargue esta clave de registro y ejecútela. Agregará la clave necesaria para el registro de .NET framework. Puedes tener más información en este enlace . Busque ‘Opción 2’ en ‘.NET 4.5 a 4.5.2’.

El archivo reg agrega lo siguiente al Registro:

 [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 

Esta es la parte de la página que es útil en caso de que se rompa:

“… habilitar TLS 1.2 de manera predeterminada sin modificar el código fuente estableciendo el valor SchUseStrongCrypto DWORD en las dos claves de registro siguientes en 1, creándolos si no existen:” HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v4.0.30319 ” y “HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v4.0.30319”. Aunque el número de versión en esas claves de registro es 4.0.30319, los marcos .NET 4.5, 4.5.1 y 4.5.2 también usan estos valores. sin embargo, las claves de registro habilitarán TLS 1.2 de manera predeterminada en todas las aplicaciones .NET 4.0, 4.5, 4.5.1 y 4.5.2 instaladas en ese sistema. Por lo tanto, es aconsejable probar este cambio antes de implementarlo en sus servidores de producción. también está disponible como un archivo de importación de registro. Sin embargo, estos valores de registro no afectarán a las aplicaciones .NET que establecen el valor de System.Net.ServicePointManager.SecurityProtocol “.

La última versión de SSPI (incluida con Windows 7) tiene una implementación de TLS 1.2, que se puede encontrar en schannel.dll

.NET Framework 4.6 usa TLS 1.2 de forma predeterminada.

Además, solo la aplicación de host debe estar en .NET 4.6, las bibliotecas a las que se hace referencia pueden permanecer en versiones anteriores.

Puede habilitar TLS 1.2 en IIS siguiendo estas instrucciones . Supongo que esto sería suficiente si tiene una aplicación basada en ASP.NET que se ejecuta en la parte superior de IIS, aunque parece que realmente no satisface sus necesidades.

como se menciona aquí , puedes agregar esta línea

 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;