Síntomas
Supongamos que ha actualizado a Microsoft .NET Framework 4.6 en el equipo. Cuando utiliza una aplicación que utiliza SSL 3.0 junto con las API de ServicePointManager o SslStream para conectarse a un servidor, la conexión falla.
Causa
Este problema se produce porque se cambió el conjunto predeterminado de protocolos SSL/TLS que usan ServicePointManager y SslStream.
Valor anterior: SSL 3.0 | TLS 1.0 | TLS 1.1
Nuevo valor: TLS 1.0 | TLS 1.1 | TLS 1.2
Solución alternativa
Para solucionar este problema, actualice el servidor a Tls 1.0, Tls 1.1 o Tls 1.2 porque se ha demostrado que SSL 3.0 no es seguro y es vulnerable a ataques como POODLE.
Nota Si no puede actualizar el servidor, use la clase AppContext para no participar en esta característica. Para ello, utilice uno de los métodos siguientes:
Programáticamente: debe ser lo primero que haga la aplicación porque ServicePointManager se inicializará solo una vez. Utilice el ejemplo de código siguiente 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 la 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 de .NET Framework 4.6, consulte Problemas conocidos de .NET Framework 4.6 .
Más información
Para obtener más información sobre los cambios en el control de versiones de productos y su impacto en .NET Framework 4.6, consulte Compatibilidad de aplicaciones en .NET Framework 4.6.
Notas
La nueva configuración solo se aplicará cuando la aplicación tenga como destino .NET Framework 4.6. .NET Framework 4.5.2 y versiones anteriores no se verán afectadas incluso si se ejecutan en un entorno de .NET Framework 4.6.
Una lista de las API de nivel superior afectadas:
- HttpClient, HttpWebRequest
- Cliente FTP
- SmtpClient
- Flujo de SSLSTREAM
SCH_USE_STRONG_CRYPTO Esta marca se usará automáticamente en .NET Framework 4.6 y afecta al comportamiento al eliminar los algoritmos criptográficos y hash no seguros. Para todas las plataformas de sistemas operativos anteriores a Windows 10, el algoritmo RC4 dejará de usarse. A partir de Windows 10, se quitarán los siguientes algoritmos no seguros adicionales: DES, NULL, EXPORT y MD5