Sintomas
Suponha que você atualizou para o Microsoft.NET Framework 4.6 em seu computador. Quando você usa um aplicativo que usa SSL 3.0 com ServicePointManager ou SslStream APIs para se conectar a um servidor, a conexão falhará.
Causa
Esse problema ocorre porque o conjunto padrão de protocolos SSL/TLS que é usado pelo ServicePointManager e 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, o Tls 1.1 e o Tls 1.2 porque SSL 3.0 foi concebida para ser desprotegida e vulnerável a ataques, como a RODADA.AppContext de optar por esse recurso. Para fazer isso, use um dos seguintes métodos:
Observação: Se você não puder atualizar o servidor, use a classe de-
Por meio de programação: Deve ser a primeira coisa que o aplicativo faz porque ServicePointManager irá inicializar somente uma vez. Use o exemplo de código a seguir 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 no arquivo Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
Mais informações
Para obter mais informações sobre as alterações de versão do produto e afetar a 4.6 do.NET Framework, consulte Compatibilidade de aplicativo do.NET Framework 4.6. Observações:
-
A nova configuração será aplicada somente quando o aplicativo está direcionando a 4.6 do.NET Framework. O.NET Framework 4.5.2 e versões anteriores não serão afetadas mesmo que eles são executados em um ambiente do.NET Framework 4.6.
-
Uma lista de APIs de nível superior afetado:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Este sinalizador vai automaticamente ser usado no.NET Framework 4.6 e afeta o comportamento, removendo os algoritmos de criptografia e hash não seguros. Para todas as plataformas de sistema operacional anterior ao Windows 10, o algoritmo RC4 será removido do uso. Do Windows 10, os seguintes algoritmos não seguros adicionais serão removidos: DES, Nulo, Exportar e MD5