J'ai un noeud final de repos qui n'effectue pas de vérification d'authentification. Je peux lancer une commande simple depuis Linux:
curl -k https://application/api/about
Cela répond.
Cependant, si vous essayez ce qui suit sur PowerShell, cela échoue:
Invoke-RestMethod https://application/api/about
Alors je reçois:
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:1 char:1
+ Invoke-RestMethod $Application
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Quelqu'un pourrait-il me dire, s'il vous plaît, comment je peux résoudre ce problème?
EDIT:
Essayer avec Invoke-WebRequest:
Invoke-WebRequest -Uri "https://application/api/about"
Invoke-WebRequest: La connexion sous-jacente a été fermée: une erreur inattendue s'est produite lors d'un envoi. A la ligne: 1 caractère: 1 + Invoke-WebRequest -Uri " https: // application/api/a ... + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeWebRequestCommand
En utilisant:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Extrait de Powershell 3.0 Invoke-WebRequest HTTPS échoue pour toutes les demandes .
dans mon cas, l’astuce de TLS n’a pas fonctionné, cela semble être un bogue dans Powershell. vous devez ajouter le rappel en utilisant du code .net au lieu d'un scriptblock.
#C# class to create callback
$code = @"
public class SSLHandler
{
public static System.Net.Security.RemoteCertificateValidationCallback GetSSLHandler()
{
return new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
}
}
"@
#compile the class
Add-Type -TypeDefinition $code
#disable checks using new class
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = [SSLHandler]::GetSSLHandler()
#do the request
try
{
invoke-WebRequest -Uri myurl -UseBasicParsing
} catch {
# do something
} finally {
#enable checks again
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null
}