The request was aborted: Could not create SSL/TLS secure channel.
.NET Framework could not negotiate TLS
Seen in .NET Framework (WebException), Windows PowerShell 5.1, older Windows apps
The .NET Framework client and the server found no TLS version or cipher in common, usually because the client only offers TLS 1.0 or 1.1.
Common causes
- An app targeting an old .NET Framework that defaults to TLS 1.0 while the server requires TLS 1.2 or 1.3.
- Code that hard-codes ServicePointManager.SecurityProtocol to an old version.
- An old Windows version without TLS 1.2 enabled or with outdated cipher suites.
How to fix it
- Target .NET Framework 4.7 or later and let the OS pick the TLS version.
- In older apps, add Tls12 to ServicePointManager.SecurityProtocol before making requests.
- In Windows PowerShell 5.1, run [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 first.
- Enable strong crypto for .NET (SchUseStrongCrypto registry value) and install Windows updates.
Got a different message? Paste it into the error explainer.
Related errors
- [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed · Python couldn't verify the server's certificate
- certificate verify failed: Hostname mismatch, certificate is not valid for · The certificate doesn't cover this hostname
- PKIX path building failed · Java can't build a trusted certificate chain
- javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure · The server rejected the TLS handshake
- No subject alternative DNS name matching example.com found · The certificate doesn't cover this hostname
- x509: certificate signed by unknown authority · Go doesn't trust the certificate's issuer
- x509: certificate is valid for X, not Y · The certificate doesn't cover this hostname
- remote error: tls: handshake failure · The server rejected the TLS handshake
- The SSL connection could not be established, see inner exception. · .NET could not complete the TLS handshake
- The remote certificate is invalid according to the validation procedure · .NET doesn't trust the server's certificate
- cURL error 60: SSL certificate problem: unable to get local issuer certificate · PHP cURL can't verify the server's certificate
- stream_socket_enable_crypto(): SSL operation failed with code 1 · PHP failed to set up TLS on a stream