Invoquer-WebRequest SSL échoue?
Lorsque j'essaie d'utiliser Invoke-WebRequest
je suis un peu bizarre d'erreur:
Invoke-WebRequest -Uri "https://idp.safenames.com/"
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
Je ne sais pas quelle en est la cause, car le site web lui-même semble bien.
Même avec tous les "ignorer les erreurs ssl" fonctions autour de stackoverflow, cela ne fonctionne toujours pas, me faisant me demande si c'est lié à SSL.
Essayez de régler votre agent utilisateur d'un navigateur avec le
Pensé, mais non, même avec le useragent cela échoue.
codyhosterman.com/2016/06/..., entrustdatacard.com/blog/2011/may/is-it-ssl-tls-or-https
-UserAgent
paramètre. Peut-être que le site bloque les connexions de "bots".Pensé, mais non, même avec le useragent cela échoue.
codyhosterman.com/2016/06/..., entrustdatacard.com/blog/2011/may/is-it-ssl-tls-or-https
OriginalL'auteur iTayb | 2016-03-28
Vous devez vous connecter pour publier un commentaire.
Comme BaconBits notes, .NET version > 4.5 utilise SSLv3 et TLS 1.0 par défaut.
Vous pouvez changer ce comportement en définissant la
SecurityProtocol
politique avec leServicePointManager
classe:Cela s'appliquera à toutes les demandes dans le domaine d'application (de sorte qu'il s'applique uniquement à l'instance actuelle de l'application hôte).
Il y a un module sur GitHub et dans PSGallery qui peut gérer ces paramètres maintenant:
Powershell 4.0 ou 4 0 -1 -1 lors de l'utilisation de la psversiontable.psversion requête
Le comportement de reproduction sur 2 diff de windows boîtes, win8.1 & 10
Comment pouvons-nous qu'il a été causé par une erreur lors de la négociation TLS? J'ai eu cette situation et ne pouvait pas, pour la vie de moi, d'en tirer quelque chose de la WebException qui dit quelque chose à propos de TLS. Le problème est apparu seulement au cours de tests automatisés, pas pendant les tests manuels. Comment, sur le côté client, pourrais-je avoir un message qui dit que "le client a tenté de négocier avec le protocole TLS 1.0 et le serveur a rejeté." Ou une sorte de pseudo-anglais explication de l'erreur, de l'au-delà "Une erreur inattendue s'est produite lors de l'envoi." Aussi pourquoi mon interactives PS utilisation de shell TLS1.2 alors qu'un nouveau powershell.exe utilise TLS1.0 ?
la meilleure chose que vous pouvez faire (ou, plus exactement, la seule chose) est de permettre à SChannel de débogage comme par support.microsoft.com/en-us/help/260729/... ... fâcheusement, cela a généralement besoin d'un redémarrage pour prendre effet. SChannel est le sous-système windows dédié à la connexion SSL/TLS et la gestion de session, donc, tout en utilisant les Api Windows pour les connexions SSL/TLS va aller à travers elle. Journal des événements aller dans l'observateur d'événements les journaux. Doit travailler pour des clients ainsi que des serveurs.
OriginalL'auteur Mathias R. Jessen
Basé sur cette analyse, il ne ressemble pas à cette URI, prend en charge quelque chose de plus bas que TLS 1.1.
Quelle version de Windows êtes-vous? Si vous êtes sur PowerShell v4.0 ou moins, vous n'allez pas être en mesure de négocier un TLS 1.1 ou 1.2 connexion car le .Net Framework ne prend pas en charge TLS 1.1 ou 1.2 jusqu'à ce que .Net Framework 4.5. PowerShell v4.0 est .Net 4.0. Cela signifie que le Système sous-jacent.Net.WebRequest les classes peut pas négocier une connexion. Je crois PowerShell v5.0 est .Net 4.5 ou .Net de 4,6, mais je n'ai pas de Gagner 10 client de vérifier la
$PSVersionTable
droit maintenant.Vous pourriez être en mesure de l'obtenir pour fonctionner en codant les appels à WebRequest manuellement et en spécifiant le protocole
[System.Net.SecurityProtocolType]::Tls12
ou[System.Net.SecurityProtocolType]::Tls11
, mais je ne suis pas sûr si c'est possible. C'est censé fonctionner si .Net 4.5 est installé à partir de ce que je vois, mais, encore une fois, je n'ai jamais essayé.Pour la référence, j'obtiens exactement le même résultat que vous sur Windows 7 x64/Powershell v4.0 et j'ai .Net 4.5 est installé, mais je n'ai jamais essayé manuellement le codage de l'WebRequest. Je reçois un message d'erreur si j'utilise wget pour Windows 1.11.4 de ici (OpenSSL 0.9.8 b, bien avant TLS 1.1 et 1.2), mais il fonctionne très bien si j'utilise wget pour Windows 1.17.1 de ici (courant, plus ou moins).
I'm not sure what's causing it
apprendre à un homme à pêcher.... Comment pouvons-nous que c'est un TLS problème? J'ai eu cette situation et ne pouvait pas, pour la vie de moi, d'en tirer quelque chose de la WebException qui dit "erreur lors de la négociation TLS". Pire, le problème est apparu seulement au cours de tests automatisés, pas de tests manuels. Comment, sur le côté client, pourrais-je avoir un message qui dit que "le client a tenté de négocier avec le protocole TLS 1.0 et le serveur a rejeté." Ou une sorte de pseudo-anglais explication de l'erreur, de l'au-delà "Une erreur inattendue s'est produite lors de l'envoi."Vous êtes souvent ne va pas pour obtenir une erreur utile ici, car le serveur ne retourne pas une erreur au client. Il vient de termine la connexion. Le client sait, c'est que la connexion s'est terminée ou a été refusé. Vous avez besoin de regarder la communication avec Wireshark, ce qui n'est pas amusant avec le protocole TLS.
OriginalL'auteur Bacon Bits
Cela peut être définitivement changé, ainsi
OriginalL'auteur Jay