Saltar al contenido

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

Te sugerimos que revises esta solución en un entorno controlado antes de pasarlo a producción, un saludo.

Solución:

intenta usar este

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

En un intento desvergonzado de robar algunos votos, SecurityProtocol es un Enum con el [Flags] attribute. Así que 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 un string para ti:

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

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

Copié y pegué esto de un script que creé después de leer esta respuesta porque no quería recorrer todos los protocolos disponibles para encontrar uno que funcionara. Por supuesto tú pudo haz 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.

Si, como yo, nada de lo anterior funciona, podría valer la pena probar específicamente una versión inferior de TLS solo. Intenté los dos siguientes, pero no pareció 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 (eliminar específicamente 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 fue previamente “confirmado” como correcto para TLS 1.2 por un tercero) parece no estarlo.

Espero que esto ayude a alguien.

Nos encantaría que puedieras difundir este ensayo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *