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
[episodio] descarga del sitio web Es una herramienta de descarga de todo el sitio. Ingrese la URL para descargar con un solo clic. Es simple y fácil de usar y tiene tareas de subprocesos múltiples.
Establecer código antes de HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
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 oficial https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
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)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
Se abre PowerShell:
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
La primera línea de código verifica la versión de TLS compatible. La segunda línea de código modifica la compatibilidad con TLS.
Ninguno de los dos métodos anteriores funcionará, por lo que sólo puedes utilizar el método definitivo:
Nota: Para conocer las versiones de TSL específicas admitidas por cada versión de Windows, consulte la información complementaria de este artículo.
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:
Quizás la longitud de la clave del certificado proporcionada por el sitio web sea de 512 bits y, según los estándares actuales de la industria, debería contener una clave pública de no menos de 2048 bits. La actualización de seguridad de Microsoft de septiembre de 2016 respondió a este problema indicando que si la longitud de la clave pública es inferior a 2048 bytes (por ejemplo, RSA 512),Windows puede cancelar conexiones HTTPS
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
Valor predeterminado de .net 4.0/4.5: SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 Valor predeterminado de .net 4.6/4.7: SecurityProtocolType.Tls |
SCH_USE_STRONG_CRYPTO Este indicador se usará automáticamente en .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework En Win7Sp1 y .Net 3.5.1, se admite TLS1.2
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; //Cerrar ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 (SecurityProtocolType)0xc00;
La conclusión de TLS1.2 es la siguiente:
Modificación del registro bajo .net4
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
Este artículo está escrito pordescarga del sitio webRecopilado y organizado, el contenido proviene de Internet, indique la fuente al reimprimir, gracias.