Mitigação: Protocolos TLS
A partir do .NET Framework 4.6, as System.Net.ServicePointManager classes e System.Net.Security.SslStream têm permissão para usar um dos três protocolos a seguir: Tls1.0, Tls1.1 ou Tls 1.2. O protocolo SSL3.0 e a cifra RC4 não são suportados.
Impacto
Esta alteração afeta:
Qualquer aplicativo que use SSL para falar com um servidor HTTPS ou um servidor de soquete usando qualquer um dos seguintes tipos: HttpClient, HttpWebRequest, FtpWebRequest, SmtpCliente SslStream.
Qualquer aplicativo do lado do servidor que não possa ser atualizado para suportar Tls1.0, Tls1.1 ou Tls 1.2..
Mitigação
A atenuação recomendada é atualizar o aplicativo sever-side para Tls1.0, Tls1.1 ou Tls 1.2. Se isso não for viável ou se os aplicativos cliente forem quebrados, a AppContext classe pode ser usada para desativar esse recurso de duas maneiras:
Programaticamente, usando um trecho de código como o seguinte:
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)
Como o ServicePointManager objeto é inicializado apenas uma vez, definir essas configurações de compatibilidade deve ser a primeira coisa que o aplicativo faz.
Adicionando a seguinte linha à <seção runtime> do seu arquivo app.config:
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
Observe, no entanto, que desativar o comportamento padrão não é recomendado, pois torna o aplicativo menos seguro.