我开发了一个需要与服务器进行安全通信的android应用程序。我得到关于不受信任的服务器的例外,因为我的服务器证书不是Android的证书列表的一部分。Android ICS - 仅当CA证书安装提示不存在时才显示CA证书安装提示
我利用以下KeyChain API(从ICS开始提供)来提示用户进行证书安装,之后通信无缝工作。
BufferedInputStream bis = new BufferedInputStream(getAssets().open(
PKCS12_FILENAME));
byte[] keychain = new byte[bis.available()];
bis.read(keychain);
Intent installIntent = KeyChain.createInstallIntent();
installIntent.putExtra(KeyChain.EXTRA_PKCS12, keychain);
installIntent.putExtra(KeyChain.EXTRA_NAME, DEFAULT_ALIAS);
startActivityForResult(installIntent, INSTALL_KEYCHAIN_CODE);
我在应用程序启动时使用上述代码,即使证书已经存在,它也会提示。关于此问题,我有以下两个问题,
编程方式如何识别特定证书是否已经存在?所以我只有在它不存在时才会提示。
在应用程序安装过程中是否发生了任何事件,我应该使用它来提示用户进行证书安装?
在几天前有一个类似的问题,不知道它是否被回答。是否可以简单*尝试*通信并拦截缺少证书的安全例外情况? – 323go 2013-02-17 18:46:50