¿Cómo puedo saber qué almacén de claves se utilizó para firmar una aplicación?
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 averiguar cuál de las claves se utilizó.
¿Cómo puedo comparar qué almacén de claves se usó originalmente para firmar mi aplicación con varios almacenes de claves que tengo en mi máquina?
5 answers
Primero, descomprima el APK y extraiga el archivo /META-INF/ANDROID_.RSA (este archivo también puede ser CERT.RSA, pero sólo debería haber uno .Archivo RSA).
Entonces emita este comando:
keytool -printcert -file ANDROID_.RSA
Obtendrá las huellas dactilares del certificado como esta:
MD5: B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
Signature algorithm name: SHA1withRSA
Luego use la herramienta de claves de nuevo para imprimir todos los alias de su almacén de claves de firma:
keytool -list -keystore my-signing-key.keystore
Obtendrá una lista de alias y su huella digital del certificado:
android_key, Jan 23, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
Voila! ahora podemos determinar que el apk ha sido 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 RUTA tenga un directorio de instalación de Java.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-04 15:29:09
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
keytool -list -printcert -jarfile app.apk
La salida revelará el propietario/emisor de la firma y las huellas dactilares MD5, SHA1 y SHA256 del archivo APK app.apk
.
(Note que el argumento -jarfile
fue introducido en Java 7; vea la documentación para más detalles.)
Firma de un almacén de claves
keytool -list -v -keystore release.jks
La salida será revele los alias (entradas) en el archivo del almacén de claves release.jks
, con las huellas dactilares del certificado (MD5, SHA1 y SHA256).
Si las huellas SHA1 entre el APK y el almacén de claves coinciden, entonces puede estar seguro de que esa aplicación está firmada con la clave.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-06 17:19:24
Para construir sobre la respuesta de Paul Lammertsma, este comando imprimirá los nombres y firmas de todos los APK en el dir 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:
APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
Signer #1:
Signature:
Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
MD5: D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
Signature algorithm name: MD5withRSA
Version: 1
APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
Signer #1:
Signature:
Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
MD5: D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
Signature algorithm name: MD5withRSA
Version: 1
O si solo te importa SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Salida de muestra:
APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 23:32:45
Una forma mucho más fácil de ver el certificado de firma:
jarsigner.exe -verbose -verify -certs myapk.apk
Esto solo mostrará el DN, por lo que si tiene dos certificados con el mismo DN, puede que tenga que comparar por huella digital.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-05 03:21:30
Hay muchos freewares para examinar los certificados y almacenes de claves como KeyStore Explorer.
Descomprimir el apk y abrir el META-INF/?.Archivo RSA. ? será CERT o ANDROIDE o puede ser otra cosa. Mostrará toda la información asociada con tu apk.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-30 12:51:43