Compartir a través de


Mitigación: protocolos TLS

A partir de .NET Framework 4.6, las System.Net.ServicePointManager clases y System.Net.Security.SslStream pueden usar uno de los tres protocolos siguientes: Tls1.0, Tls1.1 o Tls 1.2. No se admite el protocolo SSL 3.0 ni el cifrado RC4.

Impacto

Este cambio afecta a:

  • Cualquier aplicación que use SSL para comunicarse con un servidor HTTPS o un servidor de sockets mediante cualquiera de los siguientes tipos: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClienty SslStream.

  • Cualquier aplicación del lado servidor que no se pueda actualizar para admitir Tls1.0, Tls1.1 o Tls 1.2..

Mitigación

La mitigación recomendada es actualizar la aplicación del lado servidor a Tls1.0, Tls1.1 o Tls 1.2. Si esto no es posible o si las aplicaciones cliente se interrumpen, se puede usar la clase AppContext para descartar esta característica de cualquiera de estas dos maneras:

  • Mediante programación, mediante un fragmento de código como el siguiente:

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    Dado que el ServicePointManager objeto se inicializa una sola vez, definir esta configuración de compatibilidad debe ser lo primero que hace la aplicación.

  • Agregando la siguiente línea a la sección <runtime> del archivo app.config:

    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>  
    

Sin embargo, tenga en cuenta que no se recomienda no participar en el comportamiento predeterminado, ya que hace que la aplicación sea menos segura.

Consulte también