Síntomas
Se supone que se ha actualizado a Microsoft.NET Framework 4.6 en el equipo. Cuando se utiliza una aplicación que utiliza SSL 3.0 junto con ServicePointManager o SslStream API para conectarse a un servidor, se produce un error en la conexión.
Causa
Este problema se produce porque ha cambiado el conjunto de protocolos SSL/TLS predeterminado utilizado por la clase ServicePointManager y SslStream .
Valor antiguo: Ssl 3.0 | TLS 1.0 | TLS 1.1
Nuevo valor: Tls 1.0 | TLS 1.1 | 1.2 de TLS
Solución alternativa
Para evitar este problema, actualice el servidor Tls 1.0, Tls 1.1 o 1.2 Tls porque SSL 3.0 ha demostrado ser vulnerables a ataques como CANICHES y no seguras.
Nota: Si no puede actualizar el servidor, utilice la clase AppContext opten por esta característica. Para ello, utilice uno de los métodos siguientes:
-
Mediante programación: Debe ser la primera cosa que hace la aplicación porque ServicePointManager inicializará sólo una vez. Utilice el siguiente ejemplo de código en su aplicación:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
Mediante el archivo AppConfig para su aplicación: agregue la línea siguiente al archivo Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
Para obtener más información acerca de los problemas conocidos en la 4.6 de.NET Framework, vea problemas para la 4.6 de.NET Framework.
Más información
Para obtener más información acerca de los cambios de control de versiones del producto y el impacto en la 4.6 de.NET Framework, vea Compatibilidad de aplicaciones en la 4.6 de.NET Framework.
Notas:
-
La nueva configuración sólo se aplicará cuando la aplicación tiene como destino la 4.6 de.NET Framework. 4.5.2 de.NET Framework y en versiones anteriores no se verán afectadas aunque se ejecuten en un entorno.NET Framework 4.6.
-
Una lista de las API de nivel superior afectadas:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Este indicador se va a utilizar automáticamente la 4.6 de.NET Framework y afecta al comportamiento quitando los algoritmos cifrados y hash no seguros. Para todas las plataformas de sistema operativo anteriores a Windows 10, el algoritmo RC4 se quitará del uso. Desde Windows 10, se quitarán los siguientes algoritmos inseguros adicionales: DES, NULL, Exportar y MD5