Скрипт Powershell для загрузки файла, возникла проблема с настройкой безопасного соединения - PullRequest
7 голосов
/ 29 сентября 2008

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

Вот как я собираюсь захватить файл:

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

Тогда я получаю следующую ошибку:

Исключение, вызывающее "DownloadFile" с аргументом (ами) "2": "Базовый соединение было закрыто: не удалось установить доверительные отношения для Безопасный канал SSL / TLS. "

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

Ответы [ 3 ]

4 голосов
/ 29 сентября 2008

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

3 голосов
/ 29 сентября 2008

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

1 голос
/ 06 июля 2018

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...