我开发了一个需要与服务器进行安全通信的 android 应用程序。我收到关于不受信任服务器的异常,因为我的服务器证书不是 android 证书列表的一部分。
我使用以下 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);
我在应用程序启动时使用上面的代码,即使证书已经存在,它也会提示。关于这一点,我有以下两个问题,
如何以编程方式识别特定证书是否已经存在?这样我只在它不存在时才提示。
在应用程序安装过程中是否发生了任何事件,我应该使用它来提示用户安装证书?