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

Tengo muchos 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 comprobar si se utilizaba 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.

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 busca un alias específico, también puede especificarlo en el comando:

 keytool -list -keystore .keystore -alias foo 

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

error keytool: java.lang.Exception: Alias ​​no existe

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

 keytool -v -list -keystore .keystore 

Puede ejecutar desde código 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.

ACTUALIZAR: 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 estás buscando!

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

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 enumerará todos los certificados de confianza con todos los detalles y es por eso que la segunda parte sirve para 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 insensible a mayúsculas / minúsculas. Por lo tanto, el comando dado arrojará 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" 
    Intereting Posts