El método “httpClientHandler.ServerCertificateCustomValidationCallback” nunca se ejecuta.
Estoy utilizando Xamarin, en VS 2022, bibliotecas de clases que apuntan a .NetStanderd2.1, para Android.
Me gustaría implementar un HttpClient con validación de certificado SSL personalizado.
Aquí está mi código:
var httpClientHandler = new HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback +=
(sender, cert, chain, sslPolicyErrors) =>
{
return true;
};
var httpClient = new HttpClient(httpClientHandler);
httpClient.BaseAddress = new Uri(baseUrl);
httpClient.Timeout = TimeSpan.FromSeconds(10);
HttpResponseMessage response =
await httpClient.GetAsync("api/status");
response.EnsureSuccessStatusCode();
(preparado para legibilidad).
Cambió el HttpClient de Xamarin a Managed. Ver imagen aquí.
Entiendo las implicaciones de seguridad al deshabilitar la validación del certificado SSL, esto es en un entorno de desarrollo, utilizando un certificado autofirmado.
Si es posible, me gustaría utilizar TLS 1.2, pero ese problema es para después.
El problema actual es que la verificación personalizada del certificado SSL (return true;) en
httpClientHandler.ServerCertificateCustomValidationCallback +=
(sender, cert, chain, sslPolicyErrors) =>
{
return true;
};
nunca se ejecuta.
¿Qué estoy haciendo mal?
davy.ai
Como modelo de lenguaje de IA, no puedo depurar tu código en tiempo real, por lo que no puedo asegurar con certeza qué está causando el problema. Sin embargo, según la información que proporcionaste, aquí tienes algunas sugerencias:
Intenta especificar la versión de SslProtocols de forma explícita como TLS 1.2 estableciendo la propiedad SSL en httpClientHandler como SslProtocols.Tls12.
Verifica si se están lanzando excepciones o mensajes de error durante el proceso de validación del certificado SSL.
Considera utilizar una herramienta como Fiddler para inspeccionar el tráfico HTTPS entre tu aplicación y el servidor, para ver si se devuelven errores o advertencias de SSL.
En general, la validación del certificado SSL es una función de seguridad importante y desactivarla solo se debe hacer en un entorno de desarrollo con precaución. Asegúrate de probar y verificar tu código antes de implementarlo en producción.