Implémenter sa propre logique de validation de certificats de services
De base, la politique de validation utilisée dans .net fait bien son travail. Elle nous prémunit de toute mauvaise utilisation d'un certificat (objet non valide, certificat d'une autorité non reconnue … etc…)
Dans certains cas, vous pouvez vouloir ajouter des règles ou en supprimer. Pour arriver à vos fins, il suffit de modifier la propriété ServerCertificateValidationCallback de l'objet ServicePointManager. Cette propriété attend une fonction aux multiples arguments, qui doit retourner un Boolean à True quand on accepte un certificat. Les arguments nous permettent de savoir quel certificat est à valider ainsi que son contenu.
Ceci est utilisable avec toute technologie .net qui exploite un certificat : WCF, ASMX, Workflow foundation… etc.
Par exemple, si on veut accepter tout type de certificat comme les certificats auto signés, on peut utiliser le code suivant.
// Faire confiance au certificat quoi qu'il arrive et d'où qu'il vienne !!!
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
return true;
};
Note : Code tellement moche et dangereux, qu'il ne faut pas utiliser en production ;)
Plus d'informations sont disponibles via la MSDN https://msdn.microsoft.com/fr-fr/library/vstudio/system.net.security.remotecertificatevalidationcallback(v=vs.100).aspx