Sintomas
Suponha que tiver actualizado para o Microsoft .NET Framework 4.6 no seu computador. Quando utiliza uma aplicação que utiliza SSL 3.0 com ServicePointManager ou SslStream APIs para ligar a um servidor, a ligação falha.
Causa
Este problema ocorre porque o conjunto de protocolos SSL/TLS predefinido que é utilizado 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 este problema, actualize o servidor para Tls 1.0, Tls 1.1 ou Tls 1.2 porque foi demonstrado SSL 3.0 não seguro e vulnerável a ataques, como POODLE.
Nota Se não é possível actualizar o servidor, utilize a classe de AppContext de recusarem a esta funcionalidade. Para tal, utilize um dos seguintes métodos:
-
Através de programação: Tem de ser a primeira coisa que a aplicação executa porque ServicePointManager será inicializado apenas uma vez. Utilize o seguinte exemplo de código na sua aplicação:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
Utilizando o ficheiro de AppConfig para a sua aplicação: adicione a seguinte linha no ficheiro Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
Para mais informações sobre os problemas conhecidos em 4.6 de Framework .NET, consulte problemas para o quadro 4.6. .NET conhecidos.
Mais informações
Para mais informações sobre as alterações de versões de produto e o impacto em 4.6 de Framework .NET, consulte Compatibilidade de aplicações em 4.6 de Framework .NET.
Notas
-
A nova configuração só serão aplicadas quando a aplicação é de filtragem a 4.6. .NET Framework. O .NET Framework 4.5.2 e versões anteriores não serão afectados mesmo que sejam executados num ambiente do .NET Framework 4.6.
-
Uma lista de APIs de nível superior afectados:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Este sinalizador vai ser usada automaticamente em 4.6 de Framework .NET e afecta o comportamento removendo não seguros algoritmos criptográficos e hash. Para todas as plataformas do sistema operativo anteriores ao Windows 10, o algoritmo de RC4 será removido da utilização. De 10 de Windows, os seguintes algoritmos inseguros adicionais serão removidos: DES, Nulo, EXPORTAR e MD5