Script Powershell per scaricare il file, con difficoltà a configurare una connessione sicura
-
02-07-2019 - |
Domanda
Sto realizzando uno script automatico per leggere un elenco da un sito che pubblica l'ultimo codice compilato. Questa è la parte che ho già capito. La parte successiva dello script è quella di prendere quel codice compilato da un server con un certificato non attendibile.
Ecco come sto andando a prendere il file:
$web = new-object System.Net.WebClient
$web.DownloadFile("https://uri/file.msi", "installer.msi")
Quindi ottengo il seguente errore:
Eccezione che chiama " DownloadFile " con "2" argomento / i: " il sottostante connessione chiusa: impossibile stabilire una relazione di trust per Canale sicuro SSL / TLS. & Quot;
So che mi manca qualcosa, ma non riesco a trovare il modo corretto di cercarlo.
Soluzione
Devi scrivere un gestore di callback per ServicePointManager .ServerCertificateValidationCallback .
Altri suggerimenti
Brad ha ragione, ma nota che PowerShell V1 non ha davvero il supporto nativo per i delegati, cosa di cui avrai bisogno in questo caso specifico. Credo che questo dovrebbe farti superare tale limitazione ( infatti lo scenario che descrivi è esattamente uno degli esempi utilizzati).
Se stai usando PowerShell e stai affrontando questo errore. Usa il comando:
[Net.ServicePointManager] :: SecurityProtocol = [System.Net.SecurityProtocolType] :: Tls12
prima di scaricare il pacchetto. Obbliga PS a utilizzare TLS 1.2.
Il motivo dell'errore potrebbe essere il sito Web da cui si sta tentando di scaricare ha disabilitato il supporto per TLS 1.0 che PS utilizza per impostazione predefinita.