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.

com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Error de lectura: ssl=0xb4000071bca8e448: Fallo en la biblioteca SSL, generalmente un error de protocolo.

Estoy utilizando volley en mi aplicación y envío una solicitud a mi servidor, pero obtengo este error desde mi onErrorResponse de volley:

Error: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Error de lectura: ssl=0xb4000071bca8e448: Error en la biblioteca SSL, generalmente un error de protocolo
    error:10000438:SSL routines:OPENSSL_internal:TLSV1_ALERT_INTERNAL_ERROR (external/boringssl/src/ssl/tls_record.cc:587 0xb4000071bca09588:0x00000001)

Estoy utilizando un dispositivo con Android 11 y la solicitud no funciona, ¿qué debería hacer?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica un fallo de handshake SSL que puede ser debido a una versión obsoleta o no compatible del protocolo SSL/TLS. Como solución temporal, puedes intentar deshabilitar la verificación de SSL agregando el siguiente código antes de enviar una solicitud desde tu aplicación:

    // Instantiar la RequestQueue.
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    
    // Deshabilitar la verificación de SSL
    HttpsURLConnection.setDefaultHostnameVerifier(new NullHostnameVerifier());
    
    // Solicitar una respuesta de string desde la URL proporcionada.
    StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
            new Response.Listener<string>() {
                @Override
                public void onResponse(String response) {
                    // Hacer algo con la respuesta
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // Manejar el error
                }
            });
    
    // Agregar la solicitud a la RequestQueue.
    requestQueue.add(stringRequest);
    

    Y agrega esta clase en tu código:

    class NullHostnameVerifier implements HostnameVerifier {
    
      @Override
      public boolean verify(String hostname, SSLSession session) {
        Log.i("NullHostnameVerifier", "Aprobando certificado para " + hostname);
        return true;
      }
    }
    

    Este código básicamente ignora cualquier error SSL, lo cual puede no ser ideal desde el punto de vista de seguridad, pero te permitirá enviar solicitudes a tu servidor sin encontrar la excepción SSLHandshakeException. Alternativamente, también puedes revisar la configuración SSL/TLS de tu servidor y actualizarla para utilizar un protocolo/versión más actualizado y seguro.

Comments are closed.