sirven seguridad que puedo pkcs pasa para las elimino eliminar descargar credenciales confianza certificados certificado celular borran java android ssl-certificate uninstall keystore

java - seguridad - Cómo eliminar la aplicación instalada certificado de CA de confianza al desinstalar la aplicación



que pasa si elimino las credenciales de mi celular (3)

Lookout Mobile ha publicado un blog sobre esto debido a los eventos de DigiNotar, y ha proporcionado algunas instrucciones bastante buenas (lea: extensa) que puede encontrar aquí.

Lo esencial de esto es que necesita extraer /system/etc/security/cacerts.bks y luego eliminar las CA de la tienda, luego empujar la tienda de nuevo al dispositivo y reiniciar. Sus instrucciones requieren que tenga Bouncy Castle (para descifrar la tienda), acceso a la raíz y una conexión adb en funcionamiento. No estoy seguro de si esto se aplica a todas las versiones de Android o no, pero supongo que la ubicación de la tienda de CA no ha cambiado en mucho tiempo (si es que alguna vez).

Tengo una aplicación que ofrece la opción de instalar el certificado de CA y se almacena en la pestaña de usuario de Credenciales de confianza y funciona como se espera.

Para tu información (así es como instalo el certificado):

Intent installIntent = KeyChain.createInstallIntent(); javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes); installIntent.putExtra(KeyChain.EXTRA_CERTIFICATE, x509.getEncoded()); installIntent.putExtra(KeyChain.EXTRA_NAME,caRootCertName); startActivity(installIntent);

Si la aplicación se desinstala, el certificado permanece en las credenciales de confianza .

Me gustaría que el certificado se desinstale cuando se desinstala la aplicación.

Pensé en eliminar el deleteEntry utilizando el método KeyStore de KeyStore .

FYI (aunque no lo he probado. Afortunadamente debería funcionar ... Lo actualizaré una vez que lo haya probado)

javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes); KeyStore ks = KeyStore.getInstance("AndroidCAStore") if (ks != null) { ks.load(null, null); Enumeration<String> aliases = ks.aliases(); while (aliases.hasMoreElements()) { String alias = (String) aliases.nextElement(); java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias); String name = x509.getIssuerDN().getName(); if (cert.getIssuerDN().getName().contains(name)) { ks. deleteEntry(alias) } } }

Aunque si considera que el código anterior funciona, AFAIK no puedo registrar el receptor de difusión para la desinstalación de mi propia aplicación.

¿Cómo puedo eliminar el certificado instalado por mi aplicación al desinstalar la aplicación?

Cualquier ayuda es apreciada!


Por lo que sé, solo hay una transmisión que indica que la desinstalación ha completado ACTION_PACKAGE_REMOVED .

Después de desinstalar la aplicación MyCertApp, se transmite el evento ACTION_PACKAGE_REMOVED . El código que maneja ACTION_PACKAGE_REMOVED en MyCertApp ya ha desaparecido en ese momento.

Puede realizar el posprocesamiento solo con una segunda aplicación independiente que todavía está allí y que puede desinstalarse después de recibir que MyCertApp se ha ido.

La otra solución hipotética puede ser que su aplicación tenga un elemento de menú "desinstalar MyCertApp". No sé si es posible que una aplicación desinstale itselt


no puede obtener la transmisión del paquete que se desinstala para su propio paquete. Esto puede llevar a una inconsistencia en el sistema. ver esta answer