Dur*_*n.H 15 java android ssl-certificate
我以编程方式安装了证书.
我可以通过去手动卸载它 Settings -> Security -> Trusted Credentials -> User -> Choose the certificate and click the remove button
我想以编程方式删除证书.
这是我尝试过的代码,但它没有用.
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考我为什么选择deleteEntry
这是我得到的错误日志
05-19 18:27:40.789: W/System.err(14588): java.lang.UnsupportedOperationException
05-19 18:27:40.792: W/System.err(14588): at com.android.org.conscrypt.TrustedCertificateKeyStoreSpi.engineDeleteEntry(TrustedCertificateKeyStoreSpi.java:82)
05-19 18:27:40.792: W/System.err(14588): at java.security.KeyStore.deleteEntry(KeyStore.java:410)
05-19 18:27:40.792: W/System.err(14588): at com.proj.test.MyActivity$4.onClick(MyActivity.java:336)
05-19 18:27:40.792: W/System.err(14588): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
05-19 18:27:40.792: W/System.err(14588): at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 18:27:40.792: W/System.err(14588): at android.os.Looper.loop(Looper.java:135)
05-19 18:27:40.793: W/System.err(14588): at android.app.ActivityThread.main(ActivityThread.java:5254)
05-19 18:27:40.793: W/System.err(14588): at java.lang.reflect.Method.invoke(Native Method)
05-19 18:27:40.794: W/System.err(14588): at java.lang.reflect.Method.invoke(Method.java:372)
05-19 18:27:40.794: W/System.err(14588): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
05-19 18:27:40.794: W/System.err(14588): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)
这个问题与我的其他问题有些相关
任何帮助表示赞赏!
看起来KeyStoreSpi接口的实现不支持删除:
@Override
public void engineDeleteEntry(String alias) {
throw new UnsupportedOperationException();
}
Run Code Online (Sandbox Code Playgroud)
您可以使用此uninstallCaCert()方法在设备所有者的Android 5.x中执行此操作.只有在设置设备之前,才能安装设备所有者.
| 归档时间: |
|
| 查看次数: |
3266 次 |
| 最近记录: |