es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que el HttpClientHandler se esté utilizando realmente por el HttpClient. Verifica que la instancia de httpClientHandler no sea nula y que se pase como parámetro al crear la instancia del HttpClient.
    2. Intenta especificar la versión de SslProtocols de forma explícita como TLS 1.2 estableciendo la propiedad SSL en httpClientHandler como SslProtocols.Tls12.

    3. Verifica si se están lanzando excepciones o mensajes de error durante el proceso de validación del certificado SSL.

    4. 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.

Comments are closed.