tls songr solicitud seguro puede how create crear canal anulada powershell ssl

powershell - solicitud - no se puede crear un canal seguro ssl tls songr



Powershell Invoke-WebRequest falla con el canal seguro SSL/TLS (6)

Estoy tratando de ejecutar este comando de PowerShell

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

y me sale este error "Invoke-WebRequest: la solicitud fue cancelada: no se pudo crear un canal seguro SSL / TLS". Las solicitudes https parecen funcionar (" https://google.com ") pero no esta en cuestión. ¿Cómo puedo hacer que esto funcione o usar otro comando de PowerShell para leer el contenido de la página?


En un intento descarado de robar algunos votos, SecurityProtocol es una Enum con el atributo [Flags] . Entonces puedes hacer esto:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls

O como se trata de PowerShell, puede dejar que analice una cadena por usted:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"

Entonces técnicamente no necesita saber la versión de TLS.

Copié y pegué esto desde un script que creé después de leer esta respuesta porque no quería pasar por todos los protocolos disponibles para encontrar uno que funcionara. Por supuesto, podrías hacer eso si quisieras.

Nota final: tengo la declaración original (menos las ediciones SO) en mi perfil de PowerShell, por lo que está en cada sesión que comienzo ahora. No es totalmente infalible ya que todavía hay algunos sitios que simplemente fallan, pero seguramente veo el mensaje en cuestión con mucha menos frecuencia.


Este me funcionó

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"


Esto funciona para mi...

if (-not ([System.Management.Automation.PSTypeName]''ServerCertificateValidationCallback'').Type) { $certCallback = @" using System; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; public class ServerCertificateValidationCallback { public static void Ignore() { if(ServicePointManager.ServerCertificateValidationCallback ==null) { ServicePointManager.ServerCertificateValidationCallback += delegate ( Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors ) { return true; }; } } } "@ Add-Type $certCallback } [ServerCertificateValidationCallback]::Ignore() Invoke-WebRequest -Uri https://apod.nasa.gov/apod/


No he descubierto la razón, pero la reinstalación del certificado .pfx (tanto en el usuario actual como en la máquina local) funciona para mí.


Si, como yo, nada de lo anterior funciona, también podría valer la pena probar específicamente una versión más baja de TLS solo. Había intentado lo siguiente, pero no parecía resolver mi problema:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls

Al final, fue solo cuando apunté a TLS 1.0 (específicamente eliminar 1.1 y 1.2 en el código) que funcionó:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls

El servidor local (en el que se estaba intentando esto) está bien con TLS 1.2, aunque el servidor remoto (que previamente fue "confirmado" como bien para TLS 1.2 por un tercero) parece no estarlo.

Espero que esto ayude a alguien.


intenta usar este

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-WebRequest -Uri https://apod.nasa.gov/apod/