2012-10-18 10 views
5

Ich starte die KeyChain-Absicht für die Installation eines selbstsignierten Zertifikats, das ich im Speicher als X509Certificate-Objekt habe (vom X509TrustManager mit der Methode checkServerTrusted). Mit diesem Code:Programm selbstsigniertes Zertifikat programmgesteuert installieren

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

Neue Aktivität gestartet wird, und ich kann die Meldung „Zertifikat installiert ist“, aber ich kann es nicht Sicherheitszertifikate Liste, und wenn sie versuchen, auf diesen Host zu verbinden, es finden durch scheint nicht installiert zu sein.

Irgendeine Idee darüber, wie man es löst?

+0

haben Sie es geschafft für diese eine Antwort zu finden? –

Antwort

1

Der von Ihnen angegebene Bildschirm "Security Certificates List" enthält nur eine Liste der vertrauenswürdigen CA-Zertifikate, die Sie dem Android-Gerät hinzugefügt haben. (Hinweis: Die Systemliste der Zertifikate ist die Liste der vertrauenswürdigen CAs, die der Gerätehersteller festgelegt hat). Es gibt keinen Bildschirm (zumindest auf einem nicht gerooteten Telefon), der Ihnen die Zertifikate von KeyChain zeigt.

Damit eine App auf ein Zertifikat/einen Schlüssel zugreifen kann, muss sie das Betriebssystem um Erlaubnis fragen. Zu diesem Zweck verfügt die KeyChain-Klasse über eine Methode namens choosePrivateKeyAlias, die dem Benutzer eine Aktivität zur Auswahl des Zertifikats anzeigt, auf das die App zugreifen kann. In dieser Aktivität sollten alle importierten Zertifikate aufgeführt sein, die Sie mit der obigen Methode installiert haben.

Weitere Informationen finden Sie unter dem folgenden Link.

Unifying Key Store Access in ICS

Verwandte Themen