2012-10-18 34 views
5

我正在启动KeyChain,以安装自我签名证书,作为X509Certificate对象(由X509TrustManager通过checkServerTrusted方法获取)在内存中存在。 有了这个代码:以编程方式安装自签名证书

Intent intent = KeyChain.createInstallIntent(); 
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, certs[0].getEncoded()); 
intent.putExtra(KeyChain.EXTRA_NAME, "certificate"); 
context.startActivityForResult(intent, 0); 

新活动推出,我可以得到“安装证书”的消息,而是试图连接到主机时,我无法通过安全证书清单找到它,并且,它似乎没有安装。

有关如何解决它的任何想法?

+0

您是否设法找到答案? –

回答

1

您提到的安全证书列表屏幕仅包含您添加到Android设备的可信CA证书列表。 (注意:证书的系统列表是设备制造商已设置的可信CA的列表)。没有屏幕(至少在无根的手机上)向您显示KeyChain的证书。

为了使应用程序访问证书/密钥,它需要向操作系统请求权限。为此,KeyChain类有一个名为choosePrivateKeyAlias的方法,它向用户显示一个活动来选择应用程序可以访问哪个证书。此活动应列出使用上述方法安装的任何导入的证书。

请参阅下面的链接了解更多详情。

Unifying Key Store Access in ICS