Razones y soluciones para "La solicitud se canceló y no se pudo crear un canal seguro SSL/TLS"
Descripción: Solicitud abortada: no se pudo crear el canal seguro SSL/TLS. No se pudo crear un canal seguro SSL/TLS.
Plataformas de compilación: Windows Server 2012, Windows 7 Service Pack 1 (SP1) y Windows Server 2008 R2 SP1
Solución uno:
Establecer código antes de HttpWebRequest
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Solución 2
- Si el método anterior no funciona, es un problema a nivel del sistema. Actualice el parche del sistema según el sistema que esté utilizando actualmente.
Actualización para habilitar TLS 1.1 y TLS 1.2 como protocolos de seguridad predeterminados en WinHTTP en Windows; esta actualización brinda soporte para Transport Layer Security (TLS) en Windows Server 2012, Windows 7 Service Pack 1 (SP1) y Windows Server 2008 R2 SP1 1.1. y compatibilidad con TLS 1.2, consulte la documentación oficialhttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
parche de actualización
Establecer valor predeterminado
- Habilite TLS 1.1 y 1.2 en Windows 7 en el nivel del componente SChannel (adopte una de las actualizaciones 2.1 o 2.2 a continuación)
2.1. Microsoft instala y actualiza el registro:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2. Actualice manualmente el registro, copie el siguiente código de registro e impórtelo al registro. Cree un nuevo txt, cambie el sufijo txt a reg (clave de registro) e importe (haga una copia de seguridad antes de importar)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
Sistema de verificación
- Verifique si el sistema es compatible con TLS1.2, TLS1.3
Se abre PowerShell:
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Solución tres
- Ninguno de los dos métodos anteriores funcionará. Sólo puedes utilizar el método definitivo para actualizar el sistema a Windows 10.
Otro contenido de referencia
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
Existen soluciones, pero dependen de la versión del framework:
.NET 4.6 y superior. No necesita realizar ningún trabajo adicional para admitir TLS 1.2; es compatible de forma predeterminada.
.NET 4.5. Se admite TLS 1.2, pero no es el protocolo predeterminado. Tienes que elegir usarlo. El siguiente código establece TLS 1.2 como predeterminado; asegúrese de ejecutarlo antes de conectarse a un recurso seguro:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. TLS 1.2 no es compatible, pero si .NET 4.5 (o superior) está instalado en su sistema, aún tiene la opción de usar TLS 1.2 incluso si el marco de su aplicación no es compatible con TLS 1.2. El único problema es que SecurityProtocolType en .NET 4.0 no tiene entrada para TLS1.2, por lo que tenemos que usar la representación numérica de este valor de enumeración:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 o inferior. TLS 1.2(*) no es compatible y no existe ninguna solución alternativa. Actualice su aplicación a la última versión del marco.
PD: Para el escenario 3, también hay un truco de registro que obligará a 4.5 a usar TLS 1.2 de forma predeterminada sin tener que forzarlo mediante programación.
PPS Como menciona Christian Pop de Microsoft a continuación, hay un parche más reciente disponible para .NET 3.5 que habilita la compatibilidad con TLS1.2.
Ver:
KB3154518 – Paquete acumulativo de confiabilidad HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Paquete acumulativo de confiabilidad HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Paquete acumulativo de confiabilidad HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.