Quelle est la meilleure façon de gérer les certificats SSL non validants en C #

StackOverflow https://stackoverflow.com/questions/129544

  •  02-07-2019
  •  | 
  •  

Question

J'utilise le code suivant pour m'assurer que tous les certificats sont valables, même ceux qui ne sont pas valides, mais j'aimerais savoir s'il existe un meilleur moyen, car cet événement est appelé globalement et je veux seulement que le certificat passe pour un certain appel HTTP et non pour tous les autres événements asynchrones.

// This delegate makes sure that non-validating SSL certificates are passed
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
};

Le code ci-dessus est juste un exemple d'ignorer toute non-validation sur le certificat. Le problème que je rencontre est qu’il s’agit d’un événement global . Je ne vois pas quelle session l'événement a lieu. Il se peut que je reçoive quelques requêtes http et que je souhaite demander à l'utilisateur une action pour chaque requête .

Était-ce utile?

La solution

Qu'en est-il de l'argument certsender ? Contient-il quelque chose de sensé pour que vous puissiez dire pour quelle connexion le rappel a lieu? J'ai vérifié l'API .NET mais cela ne dit pas ce que l'argument est censé contenir ...

Autres conseils

Eh bien, vous pourriez même avoir la peine de vérifier certains de ces paramètres. ;) Par exemple, si vous avez un certificat auto-signé, laissez uniquement error = = SslPolicyErrors.RemoteCertificateChainError à travers. Vous pouvez également vérifier l'émetteur, le nom, etc. sur le certificat lui-même pour une sécurité supplémentaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top