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

新活动启动,我可以收到消息“证书已安装”,但我无法通过安全证书列表找到它,并且在尝试连接到该主机时,它似乎没有安装。

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

4

1 回答 1

1

您提到的安全证书列表屏幕仅包含您已添加到 Android 设备的受信任 CA 证书列表。(注:系统证书列表为设备厂商设置的可信CA列表)。没有屏幕(至少在非 root 手机上)可以显示 KeyChain 的证书。

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

有关详细信息,请参阅下面的链接。

统一 ICS 中的密钥存储访问

于 2012-11-15T15:51:51.063 回答