Tengo una aplicación que está firmada y varios archivos de almacén de claves. Me gustaría actualizar la aplicación, así que necesito saber cuál de las claves se usó.
¿Cómo puedo hacer coincidir qué almacén de claves se usó para firmar originalmente mi aplicación con varios almacenes de claves que tengo en mi máquina?
Respuestas:
Primero, descomprima el APK y extraiga el archivo /META-INF/ANDROID_.RSA (este archivo también puede ser CERT.RSA, pero solo debe haber un archivo .RSA).
Luego emita este comando:
Obtendrá huellas digitales de certificados como esta:
Luego, use la herramienta de claves nuevamente para imprimir todos los alias de su almacén de claves de firma:
Obtendrá una lista de alias y su huella digital de certificado:
Voila! ahora podemos determinar que el apk se ha firmado con este almacén de claves y con el alias 'android_key'.
Keytool es parte de Java, así que asegúrese de que su PATH tenga el directorio de instalación de Java.
fuente
Puede usar la herramienta de administración de claves y certificados de Java 7
keytool
para verificar la firma de un almacén de claves o un APK sin extraer ningún archivo.Firma de un APK
La salida revelará el propietario / emisor de la firma y las huellas digitales MD5, SHA1 y SHA256 del archivo APK
app.apk
.(Tenga en cuenta que el
-jarfile
argumento se introdujo en Java 7; consulte la documentación para obtener más detalles).Firma de un almacén de claves
La salida revelará los alias (entradas) en el archivo del almacén de claves
release.jks
, con las huellas digitales del certificado (MD5, SHA1 y SHA256).Si las huellas digitales SHA1 entre el APK y el almacén de claves coinciden, puede estar seguro de que esa aplicación está firmada con la clave.
fuente
-jarfile
argumento se introdujo con Java 7. He actualizado la respuesta.Para construir sobre la respuesta de Paul Lammertsma, este comando imprimirá los nombres y firmas de todos los APK en el directorio actual (estoy usando sh porque más tarde necesito canalizar la salida a grep):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Salida de muestra:
O si solo te importa SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Salida de muestra:
fuente
Una forma mucho más fácil de ver el certificado de firma:
Esto solo mostrará el DN, por lo que si tiene dos certificados con el mismo DN, es posible que deba comparar por huella digital.
fuente
Hay muchos programas gratuitos para examinar los certificados y los almacenes de claves, como KeyStore Explorer .
Descomprima el apk y abra el archivo META-INF /? RSA. ? será CERT o ANDROID o puede ser otra cosa. Mostrará toda la información asociada con su apk.
fuente
Puede hacerlo con la
apksigner
herramienta que forma parte del SDK de Android:apksigner verify --print-certs my_app.apk
Puede encontrar un apksigner dentro del directorio de herramientas de compilación. Por ejemplo:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
fuente