Nous n'arrivons pas à nous connecter à un serveur HTTPS en utilisant WebRequest
à cause de ce message d'erreur :
The request was aborted: Could not create SSL/TLS secure channel.
Nous savons que le serveur n'a pas de certificat HTTPS valide avec le chemin utilisé, mais pour contourner ce problème, nous utilisons le code suivant que nous avons pris d'un autre post StackOverflow :
private void Somewhere() {
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}
private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
return true;
}
Le problème est que le serveur ne valide jamais le certificat et échoue avec l'erreur ci-dessus. Quelqu'un a-t-il une idée de ce que je dois faire ?
Je dois mentionner qu'un collègue et moi avons effectué des tests il y a quelques semaines et que cela fonctionnait bien avec quelque chose de similaire à ce que j'ai écrit ci-dessus. La seule "différence majeure" que nous avons trouvée est que j'utilise Windows 7 et qu'il utilisait Windows XP. Cela change-t-il quelque chose ?
4 votes
Vérifiez également ceci stackoverflow.com/questions/1600743/
0 votes
Après quelques modifications sur mon code, nous l'avons réessayé sur un Windows XP et il fonctionne très bien ... mais toujours pas sous Windows 7. Heum ! ?! :o(
0 votes
Voici une solution que j'ai trouvée : stackoverflow.com/a/12702022/1716005 HTH
0 votes
J'ai eu une exception similaire - voir : stackoverflow.com/questions/8594684/
127 votes
Nous sommes en 2018 et cette question a été vue 308 056 fois, mais il n'y a toujours pas de solution appropriée pour cela ! !! Je reçois ce problème de façon aléatoire et aucune des corrections mentionnées ici ou dans d'autres fils de discussion n'a résolu mon problème.
5 votes
@NigelFds L'erreur
The request was aborted: Could not create SSL/TLS secure channel
est très générique. Il indique essentiellement que "l'initialisation de la connexion SSL/TLS/HTTPS a échoué pour l'une des nombreuses raisons possibles". Donc, si vous obtenez ce message régulièrement dans une situation spécifique, votre meilleure option est de poser une question spécifique en donnant des détails précis sur cette situation. Et de vérifier l'observateur d'événements pour plus d'informations. Vous pouvez également activer un débogage côté client .NET pour obtenir plus de détails (le certificat du serveur n'est-il pas fiable ? y a-t-il une erreur de chiffrement ? La version du protocole SSL/TLS ne correspond pas ? etc).6 votes
@MarnixKlooster J'ai déjà vérifié tout cela, cela ne peut pas être un problème avec le certificat car si je réessaie, cela fonctionne. Et je doute que je puisse poser cette question sur SO sans que quelqu'un vienne la marquer comme duplicate ou autre.
1 votes
J'ai essayé toutes les solutions ci-dessus et aucune ne fonctionne. Mais ceci m'aide : "En fin de compte, le problème était l'ordre du ServicePointManager et du Webrequest.Create. En inversant ces lignes, de sorte que le ServicePointManager soit défini avant le Webrequest.Create, le problème a été résolu. Je ne sais toujours pas pourquoi l'ajout du ServicePointManager après le Create a réglé notre problème initial lorsque notre serveur est passé à TLS 1.2, mais nous n'allons pas nous en préoccuper maintenant." Article original : stackoverflow.com/questions/52296865/
0 votes
J'ai eu le même problème sur Windows 7, le problème est reproductible sur internet explorer 11 allant sur un site qui a un certificat ne supporte que le protocole tls2 (c'est à dire pas de ss3, pas de tls et tls 1.1, juste seulement tls2). Je me suis rendu compte que Windows 7 O.S n'était pas à jour et que je ne pouvais pas faire une mise à jour massive en raison de problèmes de connectivité, j'ai donc commencé une enquête. Après avoir perdu deux jours, j'ai trouvé la solution. Il semble que l'installation de MS14-066 (Windows6.1-KB2992611-x64) permet d'activer des codes supplémentaires qui ne sont pas fournis avec Windows 7 au départ.
0 votes
J'ai cette même erreur avec Visual Studio 2017 (15.9.3) sur Windows 10.
0 votes
@NigelFds vous connectez vous avec un serveur qui utilise un certificat de serveur SSL de type wildcard et l'indication du nom du serveur ?
0 votes
@petko mon application se connecte à de nombreuses API différentes et presque toutes ont ce problème de temps en temps ... Je pense que le problème réside dans le cadre .Net
0 votes
@NigelFds pour clarifier : votre cible .NET Framework est 4.5.2 ?
0 votes
@petko oui, il l'est
1 votes
Je me bats contre ce problème peut-être pour la 4ème fois. La même base de code que j'utilise fonctionne bien en production et également dans l'environnement de développement de certains de mes collègues. La dernière fois, on m'a demandé d'ajouter une valeur de registre Ordinateur \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework \v4.7.02 046 \SchUseStrongCryp à [DWORD] = 1. Et ça a marché pendant un moment. J'ai commencé à travailler sur un autre projet pendant un certain temps et maintenant je suis de retour à ce projet et la demande échoue à nouveau, même avec cette correction de clé de registre. Très ennuyeux.
4 votes
@NigelFds L'utilisation de la version 4.5.2 est presque certainement une grande partie du problème. Le runtime détermine les valeurs par défaut du protocole de sécurité, et la version 4.5.x ne dispose que de SSL 3.0 et TLS 1.0, ce qui signifie que si votre application appelle une API pour laquelle TLS 1.0 est désactivé, elle échouera. Essayez un Framework .NET supérieur, de préférence 4.7 ou plus . Veuillez consulter ma réponse pour plus de détails, surtout si votre application est un site ASP.NET.
0 votes
Même problème ici, ce problème s'est produit de manière aléatoire, je ne suis pas sûr qu'il soit lié au réseau. J'utilise .net framework 4.7.2, donc cela ne devrait pas être lié à tls1.2.
0 votes
docs.microsoft.com/fr/us/dotnet/framework/network-programming/