Não é possível conectar-se a um servidor usando as APIs de SslStream ou ServicePointManager após a atualização para o.NET Framework 4.6

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3069494
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

Como Contornar
Para contornar esse problema, atualize o servidor Tls 1.0, o Tls 1.1 e o Tls 1.2, como SSL 3.0 foi concebida para ser desprotegida e vulnerável a ataques, como a RODADA.

Observação: Se você não puder atualizar o servidor, use AppContext classe de optar por esse recurso. Para fazer isso, use um dos seguintes métodos:
  • Por meio de programação: Deve ser a primeira coisa que o aplicativo faz porqueServicePointManagerirá 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"></AppContextSwitchOverrides>


Para obter mais informações sobre os problemas conhecidos na 4.6 do.NET Framework, consulte Problemas conhecidos para o.NET Framework 4.6.
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 se destina a 4.6 do.NET Framework. O.NET Framework 4.5.2 e versionswill anterior não afetado mesmo se 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 o.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 algoritmoRC4 será removido do uso. Do Windows 10, os seguintes algoritmos não seguros adicionais serão removidos:DES, Nulo, Exportar e MD5

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3069494 - Última Revisão: 07/22/2015 18:14:00 - Revisão: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3069494 KbMtpt
Comentários