android - instalar - play protect desactivar
Alerta de seguridad de Google Play para TrustManager inseguro (4)
Intente buscar "TrustManager" en sus códigos, si no se encuentra ninguno, la mayoría de los casos es debido a bibliotecas de terceros incluidas.
Para mí fue por usar una versión anterior de ACRA ( https://github.com/ACRA/acra ).
En una de mis aplicaciones, uso HTTPS con un certificado autofirmado y seguí el código de muestra del sitio de capacitación para desarrolladores de Android ( https://developer.android.com/training/articles/security-ssl.html#UnknownCa ) .
Hace poco recibí la siguiente alerta diciendo que la implementación actual no está segura:
Alerta de seguridad
Su aplicación está utilizando una implementación insegura de la interfaz X509TrustManager con un cliente Apache HTTP, lo que genera una vulnerabilidad de seguridad. Consulte este artículo del Centro de ayuda de Google para obtener detalles, incluida la fecha límite para corregir la vulnerabilidad.
¿Puede alguien proporcionar más detalles sobre lo que debe actualizarse más allá del código de muestra vinculado anteriormente?
¿Debo implementar un TrustManager
personalizado? Si es así, ¿qué debería verificar?
Para mí, el problema fue Mobilecore. He eliminado la biblioteca de la aplicación y he cargado una nueva versión de la aplicación y la advertencia ha desaparecido de la GPlay Dev Console.
Puede ser tarde, pero espero que pueda ayudar a alguien, llame a este método antes de solicitarlo al servidor. Si el certificado no es de confianza, tiene un diálogo de implementación o algo para que el usuario pueda decidir, aquí uso el diálogo de alerta.
public static void trustSSLCertificate(final Activity mActivity, final DownloadPortalTask task){
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
try {
chain[0].checkValidity();
} catch (final Exception e) {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
AlertDialog alertDialog = builder.create();
alertDialog.setCancelable(false);
String message = "There a problem with the security certificate for this web site.";
message += "/nDo you want to continue anyway?";
alertDialog.setTitle("SSL Certificate Error");
alertDialog.setMessage(message);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
acceptSSL = true;
return;
}
});
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
acceptSSL = true;
task.onInterruptedDownload();
}
});
alertDialog.show();
}
});
while( !acceptSSL){
try{
Thread.sleep(1000);
} catch( InterruptedException er) { }
}
}
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) { // should never happen
e.printStackTrace();
}
}
También identifiqué que ARCA 4.3 parece ser el culpable de mi aplicación.
Pregunta, ¿alguien sabe para verificar que el problema se resuelva? Actualmente, la Play Store a la que tengo acceso no está causando que Google me emita la advertencia, pero uno de nuestros socios que publicó la aplicación recibió la advertencia. Me gustaría verificar que el problema se resuelva antes de proporcionar a nuestro socio un nuevo APK.