Sintomas
Suponha que você tenha atualizado para o Microsoft .NET Framework 4.6 em seu computador. Quando você usa um aplicativo que usa SSL 3.0 junto com ServicePointManager ou APIs SslStream para se conectar a um servidor, a conexão falha.
Causa
Esse problema ocorre porque o conjunto padrão de protocolos SSL/TLS usado pelo ServicePointManager e pelo SslStream foi alterado.
Valor antigo: SSL 3.0 | TLS 1.0 | TLS 1.1
Novo valor: Tls 1.0 | TLS 1.1 | TLS 1.2
Solução alternativa
Para contornar esse problema, atualize o servidor para Tls 1.0, Tls 1.1 ou Tls 1.2 porque o SSL 3.0 demonstrou ser inseguro e vulnerável a ataques como POODLE.
Observação Se você não puder atualizar o servidor, use a classe AppContext para desativar esse recurso. Para fazer isso, utilize um dos métodos seguintes:
Programaticamente: deve ser a primeira coisa que o aplicativo faz porque o ServicePointManager será inicializado apenas uma vez. Use o seguinte exemplo de código em seu aplicativo:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);Usando o arquivo AppConfig para seu aplicativo: Adicione a seguinte linha ao arquivo Appconfig:
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
Para obter mais informações sobre os problemas conhecidos no .NET Framework 4.6, consulte Problemas conhecidos do .NET Framework 4.6.
Mais informações
Para obter mais informações sobre as alterações e o impacto do controle de versão do produto no .NET Framework 4.6, consulte Compatibilidade de aplicativos no .NET Framework 4.6.
Anotações
A nova configuração só se aplicará quando o aplicativo estiver direcionado ao .NET Framework 4.6. O .NET Framework 4.5.2 e as versões anteriores não serão afetadas, mesmo se forem executadas em um ambiente do .NET Framework 4.6.
Uma lista de APIs de nível superior afetadas:
- HttpClient, HttpWebRequest
- FtpClient
- SmtpClient
- Fluxo SslD
SCH_USE_STRONG_CRYPTO Esse sinalizador será usado automaticamente no .NET Framework 4.6 e afeta o comportamento removendo algoritmos criptográficos e de hash inseguros. Para todas as plataformas de sistema operacional anteriores ao Windows 10, o algoritmo RC4 será removido de uso. No Windows 10, os seguintes algoritmos não seguros adicionais serão removidos: DES, NULL, EXPORT e MD5