Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Eviter les erreurs de certificats sur des appels https en .NET

18 Août 2010 , Rédigé par Hugues MEUNIER

Lorsque nous développons des applications qui font appel à des liens externes en https, nous n'avons pas en général les certificats cibles de production.

Il faut donc passer par des certificats auto signés ou des certificats gratuits (cacert). Il peut y avoir des problèmes car les certificats auto signés ne sont pas reconnus en dehors de la machine où ils ont été créés et une exception peut être générée s'il n'y a pas de correspondance entre le nom du certificat et le nom complet de l'url accédée...

 

Heureusement, il est possible de désactiver, en c#, les mécanismes de vérification au niveau du protocole SSL et des certificats.

 

Il suffit de dériver une classe de ICertificatePolicy :

 

public class MyPolicy: ICertificatePolicy

{

public bool

CheckValidationResult(
ServicePointsrvPoint, X509Certificatecertificate, WebRequestrequest, int certificateProblem)

{

      //Return True afin de forcer l'acceptation du certificat.

      return true;

}

}

 

et d'appeler cette policy par défaut :

 

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

 

Tous les appels System.Net (proxy client WS, WCF ou HttpWebRequest) utiliseront cette policy.

 

Il est important de préciser qu'il ne faut pas mettre en place cette astuce en production car elle entraîne la désactivation des mécanismes de sécurité Windows qui protègent contre certaines attaques (le phishing).

 

Partager cet article

Repost 0

Commenter cet article