> ## 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.

# No s'ha pogut crear un canal segur SSL/TLS

> Solucioneu l'error de PowerShell 'No s'ha pogut crear un canal segur SSL/TLS' habilitant TLS 1.2 a la sessió o a tot el sistema per a scripts Invoke-WebRequest.

## Problema

En executar un script de PowerShell que utilitza `Invoke-WebRequest`, pot aparèixer l'error següent:

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

Això ocorre perquè l'script intenta connectar-se a un servidor mitjançant protocols segurs (TLS/SSL), però els protocols requerits (com TLS 1.2) no estan habilitats al 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>

## Solucions

<Tabs>
  <Tab title="Temporal">
    Per solucionar ràpidament aquest problema a la sessió actual, podeu habilitar els protocols necessaris executant l'ordre següent a la vostra sessió de PowerShell:

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

    Tanmateix, aquesta solució és temporal i s'ha de reaplicar a cada nova sessió de PowerShell.
  </Tab>

  <Tab title="Permanent">
    Per resoldre aquest problema de manera permanent i assegurar-vos que totes les aplicacions basades en .NET, inclòs PowerShell, utilitzin protocols segurs per defecte, actualitzeu el registre del sistema.

    ### Passos per solucionar-ho:

    1. Obriu una **sessió elevada de PowerShell** (Executa com a administrador).
    2. Executeu les ordres següents per actualitzar el registre:

    ```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. Apliqueu també els canvis a la clau de registre del .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. Reinicieu el sistema perquè els canvis tinguin efecte.
  </Tab>
</Tabs>

## Explicació de les claus de registre

| Configuració del registre    | Descripció                                                                                                                               |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **SchUseStrongCrypto**       | Força el .NET Framework a utilitzar protocols criptogràfics forts (p. ex., TLS 1.2).                                                     |
| **SystemDefaultTlsVersions** | Garanteix que les aplicacions .NET utilitzen la versió de TLS predeterminada del sistema, permetent-los adaptar-se a protocols més nous. |

## Si l'error persisteix

Si l'error persisteix, considereu les accions següents per assegurar connexions segures per a totes les aplicacions .NET sense requerir intervenció manual a cada sessió:

* Assegureu-vos que el vostre sistema admeti TLS 1.2 i que estigui habilitat al sistema operatiu.

* Actualitzeu a PowerShell Core o PowerShell 7, que utilitzen protocols de seguretat moderns per defecte.
