Как удалить доверенный сертификат CA с установленными приложениями при удалении приложения

У меня есть приложение, которое дает возможность установить CA cert, и оно хранится на вкладке пользователя Trusted Credentials, и оно работает так, как ожидалось.

FYI (Вот как я устанавливаю сертификат):

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); 

Если приложение удалено, сертификат остается в доверенных учетных данных .

Я хочу, чтобы сертификат был удален, когда приложение было удалено.

Я думал об удалении сертификата, используя метод KeyStore для KeyStore .

FYI (я еще не тестировал. Надеюсь, он должен работать. Я обновлю, как только я его протестирую)

 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) } } } 

Несмотря на то, что, если вы считаете, что выше работает код AFAIK, я не могу зарегистрировать широковещательный приемник для удаления моего собственного приложения.

Как я могу удалить сертификат, установленный моим приложением при удалении моего приложения?

Любая помощь приветствуется!

Вы не можете получить трансляцию пакета, удаляемого для вашего собственного пакета. Это может привести к несогласованности в системе. См. Этот ответ

Lookout Mobile опубликовал в блоге об этом из-за событий DigiNotar и предоставил некоторые довольно хорошие (прочитанные: длинные) инструкции, которые вы можете найти здесь.

Суть его в том, что вам нужно потянуть /system/etc/security/cacerts.bks, а затем удалить CA из хранилища, а затем вернуть хранилище обратно на устройство и перезагрузиться. Их инструкции требуют, чтобы у вас есть замок Bouncy (для дешифрования хранилища), root-доступ и рабочее соединение adb. Я не уверен, что это относится ко всем версиям Android или нет, но я предполагаю, что местоположение хранилища CA не изменилось за какое-то время (если вообще).

Насколько я знаю, есть только широковещательная передача, в которой говорится, что удаление завершилось ACTION_PACKAGE_REMOVED .

После удаления приложения MyCertApp транслируется событие ACTION_PACKAGE_REMOVED . Код, который обрабатывает ACTION_PACKAGE_REMOVED в MyCertApp, в то время неактивен.

Вы можете выполнить пост-обработку только со вторым независимым приложением, которое все еще существует, и это может быть unistall после получения этого MyCertApp.

Другое гипотетическое решение может заключаться в том, что ваше приложение имеет пункт меню «удалить MyCertApp». Я не знаю, можно ли приложению удалить deeltelt

Intereting Posts
NoClassDefFoundError: проблемы с привязкой моего собственного баннера к Android-проекту Обнаруживать, когда приложение неактивно в Android Как я могу запустить Onclick событие программно в android? Java.lang.IllegalStateException: активность была уничтожена – фрагмент Android Как определить, когда нажата кнопка питания в классе Broadcast Receiver, когда на Android-устройстве активировано разрешение администратора устройства Записать файл .m4a на Android Обновление только нескольких экземпляров виджета Последнее виджет Как отобразить индикаторный пузырь поверх изображения? Пример GL-стола показывает только зеленый экран в эмуляторе, но он работает на устройстве Прокрутка и события OnClick в RecyclerView Как запустить обычное приложение Java на Android Как обмениваться данными (объектами) между различными действиями Android? Что такое @ ViewDebug.ExportedProperty точно? Как добавить плагин facebook в кордову с помощью cli Запланированный будильник, чтобы повторять каждую минуту часов