Imansible generare chiave nella libreria chiave Android

Stiamo verificando un problema in cui talvolta quando un utente installa la nostra applicazione, l'applicazione tenta di accedere e generare una chiave nella libreria di chiavi, ma la libreria port questa exception:

Caused by: java.lang.IllegalStateException: could not generate key in keystore at android.security.AndroidKeyPairGenerator.generateKeyPair(AndroidKeyPairGenerator.java:100) at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:275) 

Penso che abbia a che fare con lo schema di sblock fuori dal telefono non sblocca la libreria di chiavi e / o un amministratore di dispositivo blocca il keystore.

  • la casella editText non funziona correttamente. android
  • C'è una dimensione minima del mucchio per le versioni Android?
  • Come mettere un EditText e un button accanto all'altro?
  • Facebook Like button di reindirizzamento al sito facebook in android
  • Pratica migliore: AsyncTask durante il cambio di orientamento
  • Android Hello GridView Tutorial non visualizza le immagini
  • Così viene creato il keystore e come vengono generate le chiavi:

     public SecretKeyWrapper(Context context, String alias) throws GeneralSecurityException, IOException { mCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); final KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); keyStore.load(null); if (!keyStore.containsAlias(alias)) { generateKeyPair(context, alias); } final KeyStore.PrivateKeyEntry entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, null); mPair = new KeyPair(entry.getCertificate().getPublicKey(), entry.getPrivateKey()); } private static void generateKeyPair(Context context, String alias) throws GeneralSecurityException { final Calendar start = new GregorianCalendar(); final Calendar end = new GregorianCalendar(); end.add(Calendar.YEAR, 100); final KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(context) .setAlias(alias) .setSubject(new X500Principal("CN=" + alias)) .setSerialNumber(BigInteger.ONE) .setStartDate(start.getTime()) .setEndDate(end.getTime()) .build(); final KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); gen.initialize(spec); gen.generateKeyPair(); } 

    Qualcuno sa come:

    • Blocca la libreria di chiavi come amministratore di un dispositivo?
    • Sbloccare la libreria quando è stata bloccata da un amministratore di un dispositivo?
    • Oppure riprodurre questo problema in un altro modo?

  • Come aggiungere in modo programmato un account personalizzato in android?
  • getbluetoothservice () chiamato senza bluetoothmanagercallback
  • NullPointerException a TextView.checkForRelayout () mentre setText ()
  • come utilizzare l'authentication Digest in android?
  • Apri applicazione Android dalla notifica PUSH
  • Avvia browser predefinito con parametri di intenti e post
  • One Solution collect form web for “Imansible generare chiave nella libreria chiave Android”

    Caused by: java.lang.IllegalStateException: could not generate key in keystore

    spero la prima exception sarà risolta seguendo il codice qui sotto:

     KeyStore ks = KeyStore.getInstance("AndroidKeyStore"); ks.load(null); KeyStore.Entry entry = ks.getEntry(alias, null); ks.getEntry(alias, new KeyStore.PasswordProtection(password)) 

    Sblocca la libreria quando è stata bloccata da un amministratore di un dispositivo:

    KeyStore può apparire bloccato non solo sui dispositivi pre-ICS. Il modo più semplice per get KeyStore bloccato è:

    1. Inizializza KeyStore impostando KeyGuard (pattern, pin o password sullo schermo)
    2. Aggiungi tasti o altro che memorizzi nel KeyStore
    3. Vai a Impostazioni> Sicurezza e cambia la schermata Blocco su qualcosa che non è sicuro, ad esempio Slide.
    4. Riavviare il dispositivo.

    Dopo l'avvio del dispositivo, KeyStore sarà bloccato. com.android.credentials.UNLOCK intent avvia l'attività com.android.settings.CredentialStorage , che a sua volta mostrerà UnlockDialog, richiedendo una password.

      * KeyStore: LOCKED * KeyGuard: OFF/ON * Action: old unlock dialog * Notes: assume old password, need to use it to unlock. * if unlock, ensure key guard before install. * if reset, treat as UNINITALIZED/OFF 

    Puoi solo generare una chiave master e memorizzarla come un file privato, altre applicazioni non saranno in grado di leggerlo, per cui sarai bene su dispositivi non radificati. Questo è l'approccio consigliato sul Blog Android per gli sviluppatori: http://android-developers.blogspot.jp/2013/02/using-cryptography-to-store-credentials.html

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.