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

时间:2012-10-18 15:01:28

标签: android ssl https 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);

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

Unifying Key Store Access in ICS