以编程方式安装自签名证书

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);

新活动已启动,我可以收到“证书已安装”的消息,但在安全证书列表中找不到它,尝试连接该主机时,似乎未安装。
有什么解决方法吗?

你找到这个问题的答案了吗? - Carlos N
1个回答

1
您提到的安全证书列表屏幕仅包含您已添加到Android设备的受信任CA证书列表。(请注意:系统证书列表是设备制造商设置的受信任CA列表)。至少在非Root手机上,没有显示KeyChain证书的屏幕。
为了让应用程序访问证书/密钥,它需要请求操作系统的权限。为此,KeyChain类有一个名为choosePrivateKeyAlias的方法,该方法显示一个活动以选择应用程序可以访问的证书。此活动应列出您使用上述方法安装的任何导入的证书。
有关更多详细信息,请参见下面的链接。 在ICS中统一密钥库访问

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接