studio recuperar debug crear java android keystore

java - recuperar - ¿Cómo verificar el nombre del certificado y el alias en los archivos del almacén de claves?



keytool android (6)

Tengo un montón de archivos .keystore y necesito encontrar uno con CN y alias específicos. ¿Hay alguna manera de hacerlo con keytool, jarsigner o alguna otra herramienta? Encontré una forma de verificar si se utilizó un almacén de claves específico para firmar un apk específico, pero también necesito obtener el alias y el nombre del certificado en cada uno de los archivos.


En un entorno tipo bash puedes usar:

keytool -list -v -keystore cacerts.jks | grep ''Alias name:'' | grep -i foo

Este comando consta de 3 partes. Como se indicó anteriormente, la primera parte mostrará una lista de todos los certificados de confianza con todos los detalles y es por eso que la segunda parte trata de filtrar solo la información de alias entre esos detalles. Y, finalmente, en la tercera parte puede buscar un alias específico (o parte de él). El -i activa el modo no sensible a mayúsculas. Por lo tanto, el comando dado producirá todos los alias que contengan el patrón ''foo'', fe foo, 123_FOO, fooBar, etc. Para más información man grep .


Esto listará todos los certificados:

keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"


Para obtener todos los detalles tuve que agregar la opción -v a romaintaz answer:

keytool -v -list -keystore <FileName>.keystore


Puede ejecutar desde el código de Java.

try { File file = new File(keystore location); is = new FileInputStream(file); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); String password = "password"; keystore.load(is, password.toCharArray()); Enumeration enumeration = keystore.aliases(); while(enumeration.hasMoreElements()) { String alias = (String)enumeration.nextElement(); System.out.println("alias name: " + alias); Certificate certificate = keystore.getCertificate(alias); System.out.println(certificate.toString()); } } catch (java.security.cert.CertificateException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(null != is) try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

La clase de certificado contiene toda la información sobre el almacén de claves.

ACTUALIZACIÓN- OBTENER CLAVE PRIVADA

Key key = keyStore.getKey(alias, password.toCharArray()); String encodedKey = new Base64Encoder().encode(key.getEncoded()); System.out.println("key ? " + encodedKey);

@prateek Espero que esto sea lo que buscas!


Puede ejecutar el siguiente comando para listar el contenido de su archivo de almacén de claves (y nombre de alias):

keytool -v -list -keystore .keystore

Si está buscando un alias específico, también puede especificarlo en el comando:

keytool -list -keystore .keystore -alias foo

Si no se encuentra el alias, mostrará una excepción:

Error keytool: java.lang.Exception: el alias no existe


KeyStore Explorer herramienta visual de código abierto para administrar los almacenes de claves.