Rappel personnalisé de vérification du certificat du serveur de requête HTTPS .NET
Le .NET Framework vérifie l'authenticité du certificat du serveur lors de l'établissement d'une connexion HTTPS. Cependant, dans certains cas, il peut être nécessaire de contourner cette vérification. Cet article explique comment implémenter une méthode de rappel qui vous permet d'ignorer la vérification du certificat pour des requêtes HTTPS spécifiques.
En savoir plus sur ServicePointManager.ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback
est un délégué qui définit une fonction chargée de vérifier le certificat du serveur. Lorsque le .NET Framework établit une connexion HTTPS, il appelle cette méthode de rappel pour vérifier le certificat. La méthode prend les paramètres suivants :
obj
: Fournit un contexte pour la vérification du certificat du serveur. certificate
: Certificat X.509 fourni par le serveur. chain
: Chaîne de certificats X.509 utilisée pour établir la confiance. errors
: une énumération représentant toutes les erreurs de politique SSL rencontrées. Méthode de mise en œuvre
Dans l'exemple de code, le rappel est défini comme suit :
<code class="language-csharp">ServicePointManager.ServerCertificateValidationCallback = delegate( Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };</code>
Ce rappel ignore effectivement toutes les vérifications de certificat et renvoie true
sans condition, permettant à la connexion d'être établie quel que soit l'état du certificat.
Position de rappel
Le code de rappel doit être placé avant l'exécution de ServicePointManager.ServerCertificateValidationCallback
, ce qui se produit lorsque le .NET Framework tente d'établir une connexion HTTPS. Dans l'exemple de code, cela signifie le placer avant la ligne Stream stream = request.GetRequestStream();
.
Autres options
Pour la vérification du certificat par demande, vous pouvez utiliser une expression lambda comme celle-ci :
<code class="language-csharp">request.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;</code>
Cette méthode vous permet de personnaliser la vérification du certificat pour les demandes individuelles. Vous pouvez également appliquer le même rappel à un filtre global, l'activant pour toutes les connexions HTTPS établies par votre application.
En implémentant ServerCertificateValidationCallback
, vous pouvez contourner la vérification du certificat pour les requêtes HTTPS, vous connectant ainsi à un serveur susceptible de fournir un certificat non fiable ou invalide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!