> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Não foi possível criar o canal seguro SSL/TLS

> Resolva o erro do PowerShell "Could not create SSL/TLS secure channel" habilitando o TLS 1.2 na sua sessão ou em todo o sistema para scripts com Invoke-WebRequest.

## Problema

Ao executar um script PowerShell que usa `Invoke-WebRequest`, pode aparecer o seguinte erro:

```powershell theme={null}
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
```

Isso ocorre porque o script está tentando se conectar a um servidor usando protocolos seguros (TLS/SSL), mas os protocolos necessários (como TLS 1.2) não estão habilitados no sistema.

<Frame>
  <img src="https://mintcdn.com/gorelo/k9Vf68jFwh3yoHvE/images/image-168.png?fit=max&auto=format&n=k9Vf68jFwh3yoHvE&q=85&s=6777e83ac2b24818bbb93b26b91317a6" alt="Image" width="1527" height="248" data-path="images/image-168.png" />
</Frame>

## Soluções

<Tabs>
  <Tab title="Temporária">
    Para resolver rapidamente esse problema na sessão atual, você pode habilitar os protocolos necessários executando o seguinte comando na sua sessão PowerShell:

    ```powershell theme={null}
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3
    ```

    No entanto, essa correção é temporária e precisa ser reaplicada em cada nova sessão PowerShell.
  </Tab>

  <Tab title="Permanente">
    Para resolver permanentemente esse problema e garantir que todas as aplicações baseadas em .NET, incluindo o PowerShell, usem protocolos seguros por padrão, atualize o registro do sistema.

    ### Etapas para corrigir:

    1. Abra uma **sessão PowerShell com privilégios elevados** (Executar como administrador).
    2. Execute os seguintes comandos para atualizar o registro:

    ```powershell theme={null}
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord 
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
    ```

    3. Aplique também as alterações à chave de registro do .NET Framework de 64 bits:

    ```text theme={null}
    Set-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord 
    Set-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
    ```

    4. Reinicie o sistema para garantir que as alterações sejam aplicadas.
  </Tab>
</Tabs>

## Explicação das chaves de registro

| Configuração do registro     | Descrição                                                                                                              |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **SchUseStrongCrypto**       | Força o .NET Framework a usar protocolos criptográficos fortes (por exemplo, TLS 1.2).                                 |
| **SystemDefaultTlsVersions** | Garante que as aplicações .NET usem a versão TLS padrão do sistema, permitindo que se adaptem a protocolos mais novos. |

## Se o erro persistir

Se o erro persistir, considere as seguintes ações para garantir conexões seguras em todas as aplicações .NET sem intervenção manual em cada sessão:

* Verifique se o seu sistema é compatível com TLS 1.2 e se ele está habilitado no sistema operacional.

* Atualize para o PowerShell Core ou PowerShell 7, que usam protocolos de segurança modernos por padrão.
