Скрипт Powershell для загрузки файла, возникли проблемы с настройкой безопасного соединения

StackOverflow https://stackoverflow.com/questions/146973

  •  02-07-2019
  •  | 
  •  

Вопрос

Я создаю автоматический скрипт для чтения списка с сайта, на котором публикуется последний скомпилированный код.Эту часть я уже понял.Следующая часть сценария — получить этот скомпилированный код с сервера с ненадежным сертификатом.

Вот как я собираюсь получить файл:

$web = new-object System.Net.WebClient
$web.DownloadFile("https://uri/file.msi", "installer.msi")

Затем я получаю следующую ошибку:

Исключение при вызове «DownloadFile» с аргументами «2»:"Основное соединение было закрыто:Не смог установить доверительные отношения для безопасного канала SSL/TLS ».

Я знаю, что что-то упускаю, но не могу найти правильный способ поиска.

Это было полезно?

Решение

Вам нужно написать обработчик обратного вызова для ServicePointManager.ServerCertificateValidationCallback.

Другие советы

Брэд прав, но обратите внимание, что PowerShell V1 на самом деле не имеет встроенной поддержки делегатов, которая вам понадобится в этом конкретном случае.Я считаю, что это должно тебя обойти это ограничение (на самом деле описанный вами сценарий является именно одним из использованных примеров).

Если вы используете powershell и столкнулись с этой ошибкой.Используйте команду:

[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

перед загрузкой пакета.Это заставляет PS использовать TLS 1.2.

Причиной сбоя может быть то, что веб-сайт, с которого вы пытаетесь загрузить, отключил поддержку TLS 1.0, которую PS использует по умолчанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top