La versión 3.5 de .NET framework y versiones anteriores no proporcionaba compatibilidad para que las aplicaciones usaran las versiones predeterminadas del sistema de seguridad de capa de transporte (TLS) como protocolo criptográfico. Esta actualización permite el uso de TLS v1.2 en la .NET Framework 3.5.
NotaEste contenido se ha puesto a disposición en Windows actualización. Para obtener el contenido, digitalizar Windows actualización para obtener las últimas .NET Framework actualizaciones. Si el sistema está completamente actualizado a través de Windows actualización, no es necesario que realice ninguna acción adicional.
Solución
Información de descarga
La revisión que corresponde a KB3154519 se ha reemplazado con las últimas actualizaciones de .NET Framework, que contienen todas las correcciones que se incluyeron anteriormente en KB3154519. Se recomienda instalar las actualizaciones más recientes de .NET Framework. Hemos realizado las siguientes mejoras en esta área:
-
Las siguientes claves del Registro se pueden configurar para usar los valores predeterminados del sistema operativo para SSL y TLS en lugar de los valores predeterminados de .NET Framework de una aplicación administrada que se ejecuta en el equipo.
-
Para sistemas operativos de 64 bits:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 -
Para sistemas operativos de 32 bits:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Nota Si la aplicación ha establecido el ServicePointManager.SecureProtocol en código o a través de archivos de configuración en un valor específico, o usa las API SslStream.AuthenticateAs* para especificar una enumeración específica de SslProtocols, el comportamiento de configuración del Registro no se produce.
-
-
Además, hemos agregado la enumeración SslProtocolsExtensions que puede usar como opción para establecer TLS v1.2, TLS v1.1, así como los valores predeterminados del sistema operativo para la propiedad ServicePointManager.SecurityProtocol al dirigir .NET framework versión 2.0 SP2. (Vea la sección Guía para desarrolladores para obtener información sobre cómo usar las extensiones).
Nota Windows Vista SP2 y Windows Server 2008 SP2 no admiten las versiones de protocolo de seguridad de capa de transporte (TLS) más recientes que 1.0. Las aplicaciones administradas .NET Framework 2.0 SP2 que se ejecutan en Windows Vista SP2 o Windows Server 2008 SP2 no pueden usar TLS 1.2 o TLS 1.1, incluso si esos protocolos están establecidos en la propiedad ServicePointManager.SecurityProtocol.
Para obtener más información sobre cómo descargar archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591 Cómo obtener archivos de soporte técnico de Microsoft de servicios en línea Microsoft ha digitalizado este archivo en busca de virus. Microsoft usó el software de detección de virus más reciente que había disponible en la fecha en la que se publicó el archivo. El archivo está guardado en servidores de seguridad mejorada que ayudan a prevenir cambios no autorizados del archivo.
Guía para desarrolladores
La definición de las nuevas extensiones se encuentra en los archivos siguientes:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ usando System.Security.Authentication; clase estática pública SecurityProtocolTypeExtensions { public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12; public const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11; public const SecurityProtocolType SystemDefault = (SecurityProtocolType)0; } } -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{ Clase estática pública SslProtocolsExtensions { const público SslProtocols Tls12 = (SslProtocols)0x00000C00; const público SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Para incluir la compatibilidad con TLS v1.2, incluya los archivos de origen en el proyecto y, a continuación, establezca la versión del protocolo mediante los métodos siguientes:
-
Las aplicaciones que usan API basadas en ServicePointManager pueden establecer el protocolo mediante lo siguiente:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Las aplicaciones que usan la sobrecarga SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) pueden establecer el valor SslProtocols como SslProtocolsExtensions.Tls12.
Si se establece la configuración del Registro que se menciona en el primer párrafo y el valor SslProtocols se establece en la aplicación como SslProtocols.None, el comportamiento predeterminado del sistema que se elija dependerá de la Windows versión.
Además, al cambiar el código de aplicación para habilitar la compatibilidad con TLS v1.2 con .NET Framework 3.5 SP1, debe asegurarse de que aborda las siguientes excepciones en los equipos en los que no se implementa esta revisión:-
Si la revisión no está instalada, las API basadas en ServicePointManager (HTTP, FTP, SMTP) lanzarán "System.NotSupportedException: el protocolo de seguridad solicitado no es compatible" cuando la aplicación llama a ServicePointManager.SecurityProtocol para establecer el nuevo valor.
-
Si la revisión no está instalada, las API basadas en SslStream producirán excepciones cuando llamen a cualquiera de las API de AuthenticateAs*:
System.ArgumentException: el valor especificado no es válido en la enumeración 'SslProtocolType'.
Nombre del parámetro: sslProtocolType
Nota Solo para SslStream, una combinación de Tls12, Tls11 con cualquiera de los tls, ssl3 y ssl2 existentes (por ejemplo: tls12 | Tls11 | Tls) se degradará silenciosamente a los protocolos existentes (por ejemplo: Tls) en un sistema sin la revisión. Se conectará a Tls sin producir la excepción.
Más información
Para habilitar TLS v1.1 o v1.2 como valores predeterminados del sistema operativo, siga las instrucciones de https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Nota TLS v1.1 y v1.2 no están disponibles en Windows Vista o Windows Server 2008. Si tiene que deshabilitar los valores predeterminados del sistema operativo establecidos por la clave del Registro que se menciona en la sección "Resolución" para aplicaciones específicas, puede hacerlo agregando la siguiente clave del Registro:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Ruta completa del .exe para el archivo>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Para obtener más información sobre TLS v1.2, vea Introducción a TLS v1.2. Después de habilitar la clave de registro SystemDefaultTlsVersions .NET, se produce un comportamiento diferente para cada versión de Windows, como se muestra en la tabla siguiente.
Versión de Windows |
Cliente SSL2 |
Servidor SSL2 |
Cliente SSL3 |
Servidor SSL3 |
Cliente TLS 1.0 |
Servidor TLS 1.0 |
Cliente TLS 1.1 |
Servidor TLS 1.1 |
Cliente TLS 1.2 |
Servidor TLS 1.2 |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 y Windows Server 2008 SP2 |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 y Windows Server 2008 R2 SP1 |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Desactivado |
Desactivado |
Desactivado |
Desactivado |
Windows Server 2012 |
Desactivado |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Windows 8.1 y Windows Server 2012 R2 |
Desactivado |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Windows 10 |
Desactivado |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Windows 10 (1511) |
Desactivado |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |
Windows 10 (1607) y Windows Server 2016 |
N/A |
N/A |
Desactivado |
Desactivado |
Activado |
Activado |
Activado |
Activado |
Activado |
Activado |