J'utilise une bibliothèque tierce ( Splunk c # SDK ) dans mon application principale ASP.NET. J'essaye de me connecter à mon service localhost Splunk via ce SDK, mais je reçois une exception disant:
System.Net.Http.HttpRequestException: la connexion SSL n'a pas pu être établie, voir exception interne.
Et l'exception intérieure dit:
Le certificat distant n'est pas valide selon la procédure de validation.
Ce SDK utilise le client HTTP sous le capot, mais je n'ai pas accès à cet objet pour configurer HttpClientHandler.
Toutes mes recherches sur Google finissent par utiliser ServicePointManager pour contourner la validation SSL, mais cette solution ne fonctionne pas dans le noyau Asp.Net.
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Existe-t-il un moyen de contourner cette validation dans le noyau asp.Net?
Oui, vous pouvez contourner le certificat en utilisant le code ci-dessous ...
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
// Pass the handler to httpclient(from you are calling api)
var client = new HttpClient(clientHandler)
Cela a fonctionné pour moi,
Créez un Splunk.Client.Context en fournissant un HttpClientHandler personnalisé , qui contourner [~ # ~] ssl [~ # ~] erreurs de certificat non valides.
HttpClientHandler handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
// Create Context
Context context = new Context(Scheme.Https, "localhost", 8089, default(TimeSpan), handler);
// Create Service
service = new Service(context);
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
{
// local dev, just approve all certs
if (development) return true;
return errors == SslPolicyErrors.None ;
};
Ce blog m'a aidé
https://www.khalidabuhakmeh.com/validate-ssl-certificate-with-servicepointmanager