Bagaimana cara saya memverifikasi bahwa Android apk ditandatangani dengan sertifikat rilis?

222

Bagaimana saya bisa mengecek apakah Android apk telah ditandatangani dengan rilis dan bukan debug cert?

Vadivelan
sumber
6
Saya menulis sebuah skrip yang akan memvalidasi apk terhadap keystore.
JohnnyLambada
terima jawaban jika Anda sudah mendapatkan jawaban Anda.
Rinkal Bhanderi
@JohnnyLambada Bagaimana saya bisa menjalankan skrip Anda di Mac?
Aaron Azhari
1
@JohnnyLambada Bagaimana saya bisa menjalankan skrip Anda?
sunil
@sunil Ini adalah skrip bash yang menciptakan fungsi bash baru. ikuti tautannya dan rekatkan ke file source thatfile. Komentar dalam skrip menjelaskan cara menjalankannya.
JohnnyLambada

Jawaban:

372

Gunakan perintah ini, (pergi ke java <jdk <path bin di cmd prompt)

$ jarsigner -verify -verbose -certs my_application.apk

Jika Anda melihat "CN = Android Debug", ini berarti .apk telah ditandatangani dengan kunci debug yang dihasilkan oleh Android SDK (artinya tidak ditandatangani), jika tidak, Anda akan menemukan sesuatu untuk CN. Untuk detail lebih lanjut, lihat: http://developer.android.com/guide/publishing/app-signing.html

Anass
sumber
1
Saya mendapat pesan ketika jar diverifikasi di akhir eksekusi perintah untuk 2 file apk yang berbeda. tetapi karena memberikan CN = "android debug" untuk 1 apk dan berbeda untuk apk lainnya. harus tahu mana 1 ditandatangani. Terima kasih.
iRunner
3
Bagaimana ini memverifikasi tanda tangan? Apakah akan menggunakan CA tepercaya sistem? Atau ini hanya alat untuk memeriksa integritas file jar? Terima kasih
Mostafa Shahverdy
2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- ini tidak berarti itu tidak ditandatangani. Itu berarti apa yang baru saja Anda tulis - ditandatangani dengan kunci debug.
Dmitry Zaytsev
3
Bagaimana kami dapat memeriksa bahwa itu ditandatangani dengan file sertifikat yang persis sama, dan bukan hanya yang memiliki nilai yang sama untuk organisasi, lokasi, dll.?
OlivierM
1
Terima kasih. Jadi jarsigner -verify -verbose -certs myapp.apk | grep CN= | lessdan kita seharusnya tidak melihat "CN = Android Debug".
rpattabi
70

Gunakan perintah konsol:

apksigner verify --print-certs application-development-release.apk

Anda dapat menemukan apksigner di ../sdk/build-tools/24.0.3/apksigner.bat. Hanya untuk alat bangun v. 24.0.3 dan lebih tinggi.

Baca juga google docs: https://developer.android.com/studio/command-line/apksigner.html

PavelGP
sumber
Saya temukan apksignerdi `% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (dan setiap versi alat build lain yang telah saya instal)
Jon
2
Catatan yang apksignerhilang dalam versi 26.0.0alat build. Itu dilacak di issuetracker.google.com/issues/62696222 dan seharusnya diperbaiki di versi berikutnya. Solusinya sampai saat itu adalah untuk menggunakan apksignerdari 25.0.3.
friederbluemle
2
Pembaruan: apksignertermasuk dalam versi26.0.1
forresthopkinsa
Pembaruan: APKSigner juga ada di 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 Saya percaya Anda akan menemukannya di semua rilis mendatang :)
Kirill Vashilo
2
untuk penggunaan keluaran verbose -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo
59

Gunakan perintah ini: (Jarsigner ada di folder Java bin Anda goto java-> jdk-> path bin di cmd prompt)

$ jarsigner -verify my_signed.apk

Jika .apk ditandatangani dengan benar, Jarsigner mencetak "jar diverifikasi"

Udaykiran
sumber
13
Ini tidak cukup baik karena kedua debug dan rilis apks yang ditandatangani akan memberikan "jar diverifikasi". Periksa detail jawaban @ Anass.
rpattabi
Saya mencoba persis perintah ini dan itu diverifikasi. Kemudian sebagai percobaan saya pergi ke APK dan menghapus setiap file secara harfiah kecuali file sig dan manifes, dan masih diverifikasi. Jadi ada yang salah di sini. Namun saya belum mencoba jawaban @ Anass.
orblivion
39

Yang paling mudah:

keytool -list -printcert -jarfile file.apk

Ini menggunakan aplikasi keytool Java bawaan dan tidak memerlukan ekstraksi atau instalasi alat apa pun.

Randy Sugianto 'Yuku'
sumber
Bagi siapa pun yang tidak dapat keytoollangsung berlari , periksa ini dan mungkin mencoba menambahkan %JAVA_HOME%\binke jalan
TT