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

Jos*_*ora 5 ssl https android certificate x509certificate

我正在启动KeyChain意图安装我在内存上的自签名证书X509Certificate Object(由X509TrustManager通过checkServerTrusted方法得到).使用此代码:

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

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

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

小智 1

您提到的“安全证书列表”屏幕仅包含您已添加到 Android 设备的受信任 CA 证书的列表。(注:系统证书列表是设备制造商设置的可信CA列表)。没有屏幕(至少在未root的手机上)显示钥匙串的证书。

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

请参阅下面的链接了解更多详细信息。

统一 ICS 中的密钥存储访问