2012-10-18 12 views
5

Uruchamiam zamiar KeyChain do instalacji samopodpisanego certyfikatu, który mam w pamięci jako obiekt certyfikatu X509 (otrzymany przez X509TrustManager, metodą checkServerTrusted). Z tym kodem:Instalowanie samopodpisanego certyfikatu programowo

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

Nowa działalność jest uruchomiony i mogę się komunikat „Certyfikat jest zainstalowany”, ale nie mogę go znaleźć poprzez listy certyfikatów zabezpieczeń, a gdy próbuje połączyć się z tego hosta, to wydaje się nie być zainstalowany.

Każdy pomysł, jak go rozwiązać?

+0

Udało ci się znaleźć odpowiedź na to pytanie? –

Odpowiedz

1

Wyświetlony ekran listy certyfikatów bezpieczeństwa zawiera tylko listę zaufanych certyfikatów CA, które dodano do urządzenia z systemem Android. (Uwaga: lista systemów certyfikatów to lista zaufanych urzędów certyfikacji ustawionych przez producenta urządzenia). Nie ma ekranu (przynajmniej na telefonie nierootowanym), który pokazuje certyfikaty KeyChain.

Aby aplikacja uzyskała dostęp do certyfikatu/klucza, musi poprosić OS o pozwolenie. Aby to zrobić, klasa KeyChain ma metodę o nazwie selectPrivateKeyAlias, która pokazuje użytkownikowi działanie, które wybiera certyfikat, do którego aplikacja może mieć dostęp. Ta aktywność powinna zawierać listę zaimportowanych certyfikatów, które zostały zainstalowane przy użyciu powyższej metody.

Zobacz link poniżej, aby uzyskać więcej informacji.

Unifying Key Store Access in ICS