При использовании метода Invoke-WebRequest в Powershell мой скрипт начал сорить ошибкой:
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
С кодом точно всё в порядке, он три года уже работает. Но из текста ошибки понятно, что скрипт не может по HTTPS ссылке пройти, не нравится ему что-то в сертификате.
Проблема возникла после накатывания обновлений, видимо, винда больше не хочет доверять старым TLS протоколам, полечим. Добавляем перед Invoke-WebRequest:
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
И мне помогло.
Если нужно SSLv3, то:
[Net.ServicePointManager]::SecurityProtocol = "Tls12, Tls11, Tls, Ssl3"
Ещё более сильное колдунство, которое я не использовал:
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://your.url