5

X509Certificate オブジェクト (checkServerTrusted メソッドによって X509TrustManager によって取得される) としてメモリ上にある自己署名証明書をインストールするための KeyChain インテントを起動しています。このコードで:

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 のリストです)。KeyChain の証明書を表示する画面は (少なくともルート化されていない電話では) ありません。

アプリが証明書/キーにアクセスするには、OS に許可を求める必要があります。これを行うために、KeyChain クラスには choosePrivateKeyAlias と呼ばれるメソッドがあり、アプリがアクセスできる証明書を選択するアクティビティがユーザーに表示されます。このアクティビティでは、上記の方法を使用してインストールしたインポート済み証明書が一覧表示されます。

詳細については、以下のリンクを参照してください。

ICS でのキー ストア アクセスの統合

于 2012-11-15T15:51:51.063 に答える