Skip to main content

Problem

When running a PowerShell script that uses Invoke-WebRequest, the following error may appear:
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
This occurs because the script is attempting to connect to a server using secure protocols (TLS/SSL), but the required protocols (like TLS 1.2) are not enabled on the system.
Image

Solutions

To quickly fix this issue in the current session, you can enable the necessary protocols by running the following command in your PowerShell session:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3
However, this fix is temporary and needs to be reapplied in every new PowerShell session.

Explanation of Registry Keys

Registry SettingDescription
SchUseStrongCryptoForces the .NET Framework to use strong cryptographic protocols (e.g., TLS 1.2).
SystemDefaultTlsVersionsEnsures .NET applications use the system-default TLS version, allowing them to adapt to newer protocols.

If the error persists

If the error persists, consider the following actions to ensure secure connections for all .NET applications without requiring manual intervention in each session:
  • Ensure your system supports TLS 1.2 and that it is enabled in the operating system.
  • Upgrade to PowerShell Core or PowerShell 7, which default to modern security protocols.