Eu tenho um aplicativo assinado e vários arquivos de armazenamento de chaves. Gostaria de atualizar o aplicativo, então preciso descobrir qual das chaves foi usada.
Como posso comparar qual keystore foi usado para assinar originalmente meu aplicativo com vários keystores que tenho na minha máquina?
Respostas:
Primeiro, descompacte o APK e extraia o arquivo /META-INF/ANDROID_.RSA (esse arquivo também pode ser CERT.RSA, mas deve haver apenas um arquivo .RSA).
Em seguida, emita este comando:
Você receberá impressões digitais de certificado como este:
Em seguida, use o keytool novamente para imprimir todos os aliases do seu keystore de assinatura:
Você obterá uma lista de aliases e suas impressões digitais de certificado:
Voila! agora podemos determinar que o apk foi assinado com este keystore e com o alias 'android_key'.
O Keytool faz parte do Java, portanto, verifique se o PATH possui o diretório de instalação do Java.
fonte
Você pode usar a Ferramenta de gerenciamento de chaves e certificados do Java 7
keytool
para verificar a assinatura de um keystore ou um APK sem extrair nenhum arquivo.Assinatura de um APK
A saída revelará o proprietário / emissor da assinatura e as impressões digitais MD5, SHA1 e SHA256 do arquivo APK
app.apk
.(Observe que o
-jarfile
argumento foi introduzido no Java 7; consulte a documentação para obter mais detalhes.)Assinatura de um keystore
A saída revelará os aliases (entradas) no arquivo keystore
release.jks
, com as impressões digitais do certificado (MD5, SHA1 e SHA256).Se as impressões digitais SHA1 entre o APK e o keystore corresponderem, você pode ter certeza de que o aplicativo foi assinado com a chave.
fonte
-jarfile
argumento foi introduzido no Java 7. Atualizei a resposta.Para desenvolver a resposta de Paul Lammertsma, este comando imprimirá os nomes e assinaturas de todos os APKs no diretório atual (estou usando sh porque mais tarde preciso canalizar a saída para grep):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Saída de amostra:
Ou se você se importa apenas com o SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Saída de amostra:
fonte
Maneira muito mais fácil de visualizar o certificado de assinatura:
Isso mostrará apenas o DN; portanto, se você tiver dois certificados com o mesmo DN, poderá ser necessário comparar por impressão digital.
fonte
Existem muitos freewares para examinar os certificados e armazenamentos de chaves, como o KeyStore Explorer .
Descompacte o apk e abra o arquivo META-INF / ?. RSA. ? deve ser CERT ou ANDROID ou pode ser outra coisa. Ele exibirá todas as informações associadas ao seu apk.
fonte
Você pode fazer isso com a
apksigner
ferramenta que faz parte do SDK do Android:apksigner verify --print-certs my_app.apk
Você pode encontrar o apksigner dentro do diretório build-tools. Por exemplo:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
fonte