En utilisant Invoke-WebRequest et Invoke-RestMethod de Powershell v3, j'ai utilisé avec succès la méthode POST pour publier un fichier json sur un site Web https.
La commande que j'utilise est
$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt")
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST
Cependant, lorsque j'essaye d'utiliser la méthode GET comme:
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET
L'erreur suivante est renvoyée
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:8 char:11
+ $output = Invoke-RestMethod -Uri https://IPADDRESS/resource -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
J'ai essayé d'utiliser le code suivant pour ignorer le certificat SSL, mais je ne suis pas sûr qu'il fasse réellement quelque chose.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Quelqu'un peut-il donner des indications sur ce qui pourrait ne pas se passer ici et comment y remédier?
Merci
.net
rest
powershell
https
floyd
la source
la source
Invoke-RestMethod
ouInvoke-WebRequest
?Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Vous pouvez essayer d'explorer $ Error [0] .Exception.InnerException pour plus d'informations. .Réponses:
Cette solution a fonctionné pour moi: http://connect.microsoft.com/PowerShell/feedback/details/419466/new-webserviceproxy-needs-force-parameter-to-ignore-ssl-errors
Fondamentalement, dans votre script PowerShell:
la source
-SkipCertificateCheck
maintenant.La réponse de Lee est excellente, mais j'ai également eu des problèmes avec les protocoles pris en charge par le serveur Web.
Après avoir également ajouté les lignes suivantes, je pourrais obtenir la requête https. Comme indiqué dans cette réponse https://stackoverflow.com/a/36266735
Ma solution complète avec le code de Lee.
la source
SecurityProtocol
propriété statique globale. Bon sang, je viens de perdre des JOURS en vérifiant les certificats, les approbations, le réseau, les routes, les autorisations et une foule d'autres choses en essayant de résoudre uneendpoint does not respond
erreur vague lors de l'accès à un serveur spécifique via https (tous les autres fonctionnent), simplement parce que ce putain de PowerShell 5.1 par défaut SSL3, TLS et ce juste BLOCS GODDAMN TLS11 et TLS12 PAR dÉFAUT dieu à quel point je déteste cette merde je aurais dû écrire ce script en C # / Ruby / C ++, ou tout autre chose qui ne powershellAvez-vous essayé d'utiliser
System.Net.WebClient
?la source
Une implémentation alternative en pure PowerShell(sans
Add-Type
dec # la source):la source
Ce qui suit a fonctionné pour moi (et utilise les derniers moyens non obsolètes pour interagir avec la fonctionnalité SSL Certs / callback) et n'essaye pas de charger le même code plusieurs fois dans la même session PowerShell:
Cela a été adapté de l'article suivant https://d-fens.ch/2013/12/20/nobrainer-ssl-connection-error-when-using-powershell/
la source
J'ai constaté que lorsque j'ai utilisé cette fonction de rappel pour ignorer les certificats SSL
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
J'ai toujours reçu le message d'erreur
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
qui ressemble aux résultats que vous obtenez.J'ai trouvé ce post de forum qui me conduit à la fonction ci-dessous. Je l'exécute une fois dans le cadre de mon autre code et cela fonctionne pour moi.
la source
J'ai essayé de rechercher de la documentation sur l'API REST EM7 OpenSource. Pas de chance pour l'instant.
http://blog.sciencelogic.com/sciencelogic-em7-the-next-generation/05/2011
On parle beaucoup de l'API REST OpenSource, mais pas de lien vers l'API réelle ou aucune documentation. J'étais peut-être impatient.
Voici quelques choses que vous pouvez essayer
Essayez ceci pour voir si vous pouvez filtrer les colonnes que vous obtenez de l'API
ou, vous pouvez essayer d'utiliser ceci aussi
En-têtes de style Curl
J'ai testé l'IRM / IWR avec l'API Twitter JSON.
J'espère que cela t'aides.
la source
Vous pouvez utiliser -SkipCertificateCheck Parameter pour y parvenir en tant que commande à une seule ligne (CE PARAMÈTRE EST UNIQUEMENT PRIS EN CHARGE SUR LA PSEDITION DE BASE)
la source
Nouveau-SelfSignedCertificate -certstorelocation cert: \ localmachine \ my -dnsname {votre-site-hostname}
dans PowerShell en utilisant les droits d'administrateur , cela générera tous les certificats dans le répertoire personnel
Assurez-vous que le nom d'hôte du site Web et le nom DNS du certificat doivent correspondre exactement
la source
Ces paramètres de registre affectent .NET Framework 4+ et donc PowerShell. Définissez-les et redémarrez toutes les sessions PowerShell pour utiliser le dernier TLS, aucun redémarrage nécessaire.
Voir https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls#schusestrongcrypto
la source
Si vous exécutez ceci en tant qu'administrateur, cette erreur devrait disparaître
la source