Razões e soluções para "A solicitação foi abortada e não foi possível criar um canal seguro SSL/TLS"
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
Solução um:
Definir código antes de HttpWebRequest
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Solução 2
- 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 oficialhttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
atualizar patch
Definir valor padrão
- Habilite o TLS 1.1 e 1.2 no Windows 7 no nível do componente SChannel (adote uma das atualizações 2.1 ou 2.2 abaixo)
2.1. A Microsoft instala e atualiza o registro:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2. Atualize manualmente o registro, 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)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
Sistema de verificação
- Verifique se o sistema suporta TLS1.2, TLS1.3
PowerShell abre:
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Solução três
- Nenhum dos dois métodos anteriores funcionará. Você só pode usar o método definitivo para atualizar o sistema para o Windows 10.
Outro conteúdo de referência
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
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:
KB3154518 – Pacote cumulativo de confiabilidade HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Rollup de confiabilidade HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Rollup de confiabilidade HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.