Alerta de seguridad de Android WebView SSL

Estoy construyendo una versión de prueba de una aplicación para un cliente. Parte de esta aplicación utiliza un WebView que llama a un sitio basado en SSL. A su vez, el cliente ha proporcionado un dominio de prueba donde el nombre del certificado no coincide con el FQDN. Por desgracia, no están en condiciones de aprovisionar un cert que coincida. 🙁

Estoy trabajando alrededor de este problema en la aplicación ad hoc iOS ad hoc con una línea de código (de nuevo, no para uso en la producción – sólo para fines de prueba). He buscado información similar en el sistema operativo Android, pero las soluciones que he visto aquí y en otros lugares son suficientes para hacer que mi cabeza girar gran momento por comparación!

¿Hay una manera sencilla de evitar esto? Incluso un entorno orientado al usuario escondido en algún lugar?

Claves apreciado!

2 Solutions collect form web for “Alerta de seguridad de Android WebView SSL”

Crear un WebViewClient y manejar el onReceivedSslError que se parece a esto:

public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) 

Dentro de esta devolución de llamada sólo puede llamar a handler.proceed() y la página continuará cargando. Si no maneja esta devolución de llamada y llama al método proceed() entonces el comportamiento predeterminado será que la página no se cargue.

Respuesta actualizada según la nueva actualización de política de seguridad de Google para SSL Error Handler, consulte este artículo del Centro de asistencia de desarrolladores de Android.

Para evitar el rechazo de la aplicación en Google Play por infringir nuestra política de comportamiento malicioso.

Para manejar correctamente la validación de certificados SSL, cambie su código para invocar SslErrorHandler.proceed () siempre que el certificado presentado por el servidor cumpla con sus expectativas e invoque SslErrorHandler.cancel () de lo contrario.

Por ejemplo, agrego un cuadro de diálogo de alerta para que el usuario haya confirmado y parece que Google ya no muestra advertencia.

 @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { final AlertDialog.Builder builder = new AlertDialog.Builder(this); String message = "SSL Certificate error."; switch (error.getPrimaryError()) { case SslError.SSL_UNTRUSTED: message = "The certificate authority is not trusted."; break; case SslError.SSL_EXPIRED: message = "The certificate has expired."; break; case SslError.SSL_IDMISMATCH: message = "The certificate Hostname mismatch."; break; case SslError.SSL_NOTYETVALID: message = "The certificate is not yet valid."; break; } message += " Do you want to continue anyway?"; builder.setTitle("SSL Certificate Error"); builder.setMessage(message); builder.setPositiveButton("continue", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.proceed(); } }); builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.cancel(); } }); final AlertDialog dialog = builder.create(); dialog.show(); 

}

  • Redirigir la vista web de Android con el filtro de intenciones
  • WebView se expande infinitamente - ¿cómo se puede prevenir esto?
  • Vista Web de Android: la página web debe ajustarse a la pantalla del dispositivo
  • WebView con certificado de cliente SSL en Android 4 ICS
  • Android Cómo mostrar vínculos en la vista web de esta manera?
  • Desarrollo de Android: Uso de la imagen de activos en un HTML de WebView
  • Detectar el cambio de ubicación de la URL de webview de Android
  • Tuve que cargar dos datos dos veces para que WebView se actualizara en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.