Script Powershell pour télécharger le fichier, rencontre des difficultés pour établir une connexion sécurisée
-
02-07-2019 - |
Question
Je suis en train de créer un script automatisé pour lire une liste d'un site publiant le dernier code compilé. C'est la partie que j'ai déjà comprise. La prochaine partie du script consiste à récupérer ce code compilé sur un serveur doté d’un certificat non approuvé.
Voici comment je vais récupérer le fichier:
$web = new-object System.Net.WebClient
$web.DownloadFile("https://uri/file.msi", "installer.msi")
J'obtiens ensuite l'erreur suivante:
Appel d’exception " DownloadFile " avec " 2 " argument (s): "Le sous-jacent connexion a été fermée: Impossible d'établir une relation de confiance pour le Canal sécurisé SSL / TLS. "
Je sais que quelque chose me manque, mais je ne peux pas trouver le bon moyen de le rechercher.
La solution
Vous devez écrire un gestionnaire de rappel pour ServicePointManager .ServerCertificateValidationCallback .
Autres conseils
Brad a raison, mais notez que PowerShell V1 ne prend pas en charge les délégués en natif, ce dont vous aurez besoin dans ce cas particulier. Je pense que cela devrait vous permettre de contourner cette limitation ( En fait, le scénario que vous décrivez est exactement l'un des exemples utilisés).
Si vous utilisez Powershell et faites face à cette erreur. Utilisez la commande:
[Net.ServicePointManager] :: SecurityProtocol = [System.Net.SecurityProtocolType] :: Tls12
avant de télécharger le package. Il oblige PS à utiliser TLS 1.2.
La raison de l'échec peut être que le site Web sur lequel vous essayez de télécharger a désactivé la prise en charge de TLS 1.0 utilisée par PS par défaut.