我有一个应用程序,提供安装CA证书的选项,并将其存储在用户选项卡中的“受信任凭据”中,它可以正常工作。
FYI(这是我安装证书的方法):
如果应用程序被卸载,证书仍然保留在“受信任的凭据”中。
我希望应用程序卸载时证书也能被卸载。
我考虑使用
即使您认为上述代码有效,据我所知,我无法为自己的应用程序注册卸载的广播接收器。
如何在卸载我的应用程序时删除由我的应用程序安装的证书?
感谢任何帮助!
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
的deleteEntry方法来删除证书。
顺便提一下 (尽管我还没有测试。但希望它可以正常工作... 我会在测试后进行更新)。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)
}
}
}
即使您认为上述代码有效,据我所知,我无法为自己的应用程序注册卸载的广播接收器。
如何在卸载我的应用程序时删除由我的应用程序安装的证书?
感谢任何帮助!