WebClient + HTTPS Questions

Je suis actuellement à l'intégration avec un système créé par une 3ème partie. Ce système me demande d'envoyer une demande à l'aide de XML/HTTPS. La 3ème partie m'envoyer le certificat et je l'ai installé

J'utilise le code suivant:

using (WebClient client = new WebClient())
{
   client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

   System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
   var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}

Ce code renvoie la suivante WebException:

La connexion sous-jacente a été fermée: impossible d'établir une relation de confiance pour le canal sécurisé SSL/TLS.

Mise à JOUR Parce que c'est un serveur de test, je suis en train de travailler contre, le certificat n'est pas approuvé et la validation échoue... Pour contourner ce test/debug de l'environnement, de créer une nouvelle ServerCertificateValidationCallback

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);

et voici mon "faux" rappel

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
}

Lire plus ici et ici

  • Aller ici.
  • +1 pour la mise à jour avec le code que vous avez utilisé. Belle solution rapide pour moi à cause de ça.
  • Cela a été très utile au lieu d'inscrire le fiddler autorité de certification racine dans mon dev-machine lors du débogage SSL webservices! Je viens de mettre un #if DEBUG autour de la partie qui a ajouté le mannequin de rappel à ne pas le mettre dans le code de production.
  • Cela fonctionne bien pour .NET 4.5, mais pas 4.6. Je me demande pourquoi.
InformationsquelleAutor rudigrobler | 2009-02-11