Descrição: Solicitação anulada: falha ao criar canal seguro SSL/TLS. Não foi possível criar um canal seguro SSL/TLS. Plataformas de compilação: Windows Server 2012, Windows 7 Service Pack 1 (SP1) e Windows Server 2008 R2 SP1
[episódio] download do site É uma ferramenta de download para todo o site. Insira a URL para baixar com um clique. É simples e fácil de usar e possui tarefas multithread.
Definir código antes de HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Se o método acima não funcionar, é um problema de nível de sistema. Atualize o patch do sistema de acordo com o sistema que você está usando no momento.
Atualização para habilitar TLS 1.1 e TLS 1.2 como protocolos de segurança padrão no WinHTTP no Windows. Esta atualização fornece suporte para Transport Layer Security (TLS) no Windows Server 2012, Windows 7 Service Pack 1 (SP1) e Windows Server 2008 R2 SP1 1.1 e suporte TLS 1.2, consulte a documentação oficial https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
Copie o seguinte código de registro e importe-o para o registro. Crie um novo txt, altere o sufixo txt para reg (chave de registro) e importe (faça um backup antes de importar)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
PowerShell abre:
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
A primeira linha de código verifica a versão TLS suportada. A segunda linha de código modifica o suporte TLS.
Nenhum dos dois métodos anteriores funcionará, então você só pode usar o método definitivo:
Observação: para versões específicas do TSL suportadas por cada versão do Windows, consulte as informações complementares neste artigo.
Existem soluções, mas dependem da versão do framework:
.NET 4.6 e superior. Você não precisa fazer nenhum trabalho adicional para oferecer suporte ao TLS 1.2; ele é compatível por padrão.
.NET 4.5. O TLS 1.2 é compatível, mas não é o protocolo padrão. Você precisa escolher usá-lo. O código a seguir define o TLS 1.2 como padrão, certifique-se de executá-lo antes de conectar-se a um recurso seguro:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. O TLS 1.2 não é compatível, mas se o .NET 4.5 (ou superior) estiver instalado em seu sistema, você ainda terá a opção de usar o TLS 1.2, mesmo que a estrutura do seu aplicativo não ofereça suporte ao TLS 1.2. O único problema é que SecurityProtocolType no .NET 4.0 não possui entrada para TLS1.2, então temos que usar a representação numérica deste valor enum:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 ou inferior. O TLS 1.2(*) não é compatível e não há solução alternativa. Atualize seu aplicativo para a versão mais recente da estrutura.
PS Para o cenário 3, há também um hack de registro que forçará o 4.5 a usar o TLS 1.2 por padrão, sem ter que forçá-lo programaticamente. PPS Como Christian Pop da Microsoft menciona abaixo, há um patch mais recente disponível para .NET 3.5 que permite suporte a TLS1.2.
Ver:
Talvez o comprimento da chave do certificado fornecido pelo site seja de 512 bits e, de acordo com os padrões atuais da indústria, deve conter uma chave pública de pelo menos 2.048 bits. A atualização de segurança de setembro de 2016 da Microsoft respondeu a esse problema afirmando que se o comprimento da chave pública for inferior a 2.048 bytes (por exemplo, RSA 512),O Windows pode cancelar conexões HTTPS
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
Valor padrão do .net 4.0/4.5: SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 Valor padrão do .net 4.6/4.7: SecurityProtocolType.Tls |
SCH_USE_STRONG_CRYPTO Este sinalizador será usado automaticamente no .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework No Win7Sp1 e .Net 3.5.1, TLS1.2 é compatível
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; //Fechar ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 (SecurityProtocolType)0xc00;
A conclusão do TLS1.2 é esta:
Modificação do registro em .net4
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
Este artigo foi escrito pordownload do siteColetado e organizado, o conteúdo vem da Internet, indique a fonte na reimpressão, obrigado.