web-dev-qa-db-fra.com

RestSharp - Ignorer les erreurs SSL

Y a-t-il un problème avec lequel je peux demander à RestSharp d'ignorer les erreurs dans les certificats SSL? J'ai un client de test et le service auquel je me connecte n'a pas encore de certificat valide.

Lorsque je fais une demande maintenant, j'obtiens l'erreur:

The underlying connection was closed: Could not establish trust 
relationship for the SSL/TLS secure channel.

Merci d'avance

/Michael

Mise à jour:

J'ai fini par utiliser:

ServicePointManager.ServerCertificateValidationCallback +=
            (sender, certificate, chain, sslPolicyErrors) => true;
56
Michael Skarum

Comme John l'a suggéré:

ServicePointManager.ServerCertificateValidationCallback +=
        (sender, certificate, chain, sslPolicyErrors) => true;
70
Michael Skarum

Il y a une meilleure solution que de modifier votre code. Idéalement, vous voulez une solution qui simule 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 utilisez IIS Express, vous en aurez déjà un, vous n'aurez qu'à le trouver. Si vous ne l'avez pas déjà, ouvrez Firefox ou le navigateur de votre choix et accédez à votre site Web. Vous devriez pouvoir afficher les informations du certificat à partir de la barre d'URL et, selon votre navigateur, vous devriez pouvoir exporter le certificat.

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.

Maintenant, votre ordinateur dans son ensemble fera implicitement confiance à tous les certificats qu'il a lui-même générés 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 que vous y ayez un certificat valide valide.

7
Nigel Thomas

Vous pouvez le définir dans votre objet

var restClient = new RestClient(baseUrl);
restClient.RemoteCertificateValidationCallback = 
           (sender, certificate, chain, sslPolicyErrors) => true;
6
M. Hamza Rajput