Diretório de artigos
  1. 1. Solução um:
  2. 2. Solução 2
    1. 2.1. atualizar patch
    2. 2.2. Definir valor padrão
    3. 2.3. Sistema de verificação
  3. 3. Solução três
  4. 4. Outro conteúdo de referência

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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

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.

Diretório de artigos
  1. 1. Solução um:
  2. 2. Solução 2
    1. 2.1. atualizar patch
    2. 2.2. Definir valor padrão
    3. 2.3. Sistema de verificação
  3. 3. Solução três
  4. 4. Outro conteúdo de referência