J'obtiens l'erreur suivante lors d'une demande de service Web à un service Web distant:
Impossible d'établir une relation d'approbation pour le canal sécurisé SSL / TLS. ---> System.Security.Authentication.AuthenticationException: le certificat distant n'est pas valide selon la procédure de validation.
Est-il possible d'ignorer cette erreur et de continuer?
Il semble que le certificat distant n'est pas signé.
Le site auquel je me connecte est www.czebox.cz
- alors n'hésitez pas à visiter le site et notez que même les navigateurs lancent des exceptions de sécurité.
Autoriser tous les certificats est très puissant, mais cela peut aussi être dangereux. Si vous souhaitez n'autoriser que des certificats valides plus certains certificats, cela pourrait être fait comme ceci.
Noyau .Net:
Framework .Net:
Mettre à jour:
Comment obtenir de la
cert.GetCertHashString()
valeur dans Chrome:Cliquez sur
Secure
ouNot Secure
dans la barre d'adresse.Cliquez ensuite sur Certificat -> Détails -> Empreinte numérique et copiez la valeur. N'oubliez pas de faire
cert.GetCertHashString().ToLower()
.la source
Hash String
un certificat?cert.GetCertHashString()
depuisImmediate window
ou vérifiez certThumbprint
dans votre navigateur ouMMC
s'il est installé localement.IgnoreBadCertificates, méthode:
la source
La raison pour laquelle il échoue n'est pas parce qu'il n'est pas signé, mais parce que le certificat racine n'est pas approuvé par votre client. Plutôt que de désactiver la validation SSL, une autre approche consiste à ajouter le certificat d'autorité de certification racine à la liste des autorités de certification approuvées par votre application.
Il s'agit du certificat d'autorité de certification racine auquel votre application ne fait actuellement pas confiance:
Vous pouvez décoder et afficher ce certificat en utilisant
ce décodeur de certificat ou un autre décodeur de certificat
la source
Pour désactiver la validation du certificat SSL dans la configuration du client.
la source
Ce code a fonctionné pour moi. J'ai dû ajouter TLS2 car c'est ce que l'URL qui m'intéresse utilisait.
la source
Contourner le certificat SSL ...
la source
Si vous utilisez des sockets directement et que vous vous authentifiez en tant que client, la méthode de rappel Service Point Manager ne fonctionnera pas. Voici ce qui a fonctionné pour moi. VEUILLEZ UTILISER UNIQUEMENT À DES FINS DE TEST .
La clé ici, est de fournir le rappel de validation de certificat à distance directement dans le constructeur du flux SSL.
la source
Pour développer davantage l'article de BIGNUM - Idéalement, vous voulez une solution qui simulera les conditions que vous verrez en production et la modification de votre code ne le fera pas et pourrait être dangereuse si vous oubliez de retirer le code avant de le déployer.
Vous aurez besoin d'une sorte de certificat auto-signé. Si vous savez ce que vous faites, vous pouvez utiliser le binaire BIGNUM affiché, mais sinon vous pouvez aller chercher le certificat. Si vous utilisez IIS Express, vous en aurez déjà un, il vous suffira de le trouver. Ouvrez Firefox ou le navigateur de votre choix et accédez à votre site Web de développement. Vous devriez pouvoir afficher les informations du certificat à partir de la barre d'URL et en fonction de votre navigateur, vous devriez pouvoir exporter le certificat dans un fichier.
Ensuite, ouvrez MMC.exe et ajoutez le composant logiciel enfichable Certificat. Importez votre fichier de certificat dans le magasin des autorités de certification racines de confiance et c'est tout ce dont vous avez besoin. Il est important de s'assurer qu'il entre dans ce magasin et non dans un autre magasin comme «Personnel». Si vous ne connaissez pas MMC ou les certificats, il existe de nombreux sites Web contenant des informations sur la manière de procéder.
Maintenant, votre ordinateur dans son ensemble fera implicitement confiance à tous les certificats qu'il a générés lui-même et vous n'aurez pas besoin d'ajouter de code pour gérer cela spécialement. Lorsque vous passez à la production, il continuera de fonctionner à condition qu'un certificat valide approprié y soit installé. Ne faites pas cela sur un serveur de production - ce serait mauvais et cela ne fonctionnera pas pour d'autres clients que ceux du serveur lui-même.
la source
Cela fonctionne pour .Net Core. Faites appel à votre client Soap:
la source