Làm cách nào để xác minh rằng apk Android được ký với chứng chỉ phát hành?


222

Làm cách nào tôi có thể kiểm tra apk apk được ký với bản phát hành và không gỡ lỗi chứng chỉ?


6
Tôi đã viết một tập lệnh sẽ xác nhận apk đối với kho khóa.
JohnnyLambada

chấp nhận câu trả lời nếu bạn đã có của bạn
Rinkal Bhanderi

@JohnnyLambada Làm cách nào tôi có thể chạy tập lệnh của bạn trong Mac?
Aaron Azhari

1
@JohnnyLambada Làm thế nào tôi có thể chạy tập lệnh của bạn?
nắng

@sunil Đó là một tập lệnh bash tạo ra một hàm bash mới. Theo liên kết và dán nó vào một tập tin sau đó source thatfile. Nhận xét trong kịch bản giải thích làm thế nào để chạy nó.
JohnnyLambada

Câu trả lời:


372

Sử dụng lệnh này, (đi tới java <jdk <bin path trong dấu nhắc cmd)

$ jarsigner -verify -verbose -certs my_application.apk

Nếu bạn thấy "CN = Android Debug", điều này có nghĩa là .apk đã được ký với khóa gỡ lỗi được tạo bởi SDK Android (có nghĩa là nó không được ký), nếu không bạn sẽ tìm thấy thứ gì đó cho CN. Để biết thêm chi tiết, hãy xem: http://developer.android.com/guide/publishing/app-signing.html


1
Tôi nhận được thông báo khi jar được xác minh vào cuối quá trình thực thi lệnh cho 2 tệp apk khác nhau. Cũng bị nhầm lẫn. nhưng vì nó mang lại cho CN = "gỡ lỗi android" cho 1 apk và khác với apk khác .got để knw mà 1 được ký. Cảm ơn.
iRunner

3
Làm thế nào để xác minh chữ ký? Nó sẽ sử dụng các CA đáng tin cậy của hệ thống? Hoặc đây chỉ là một công cụ để kiểm tra tính toàn vẹn của các tệp jar? Cảm ơn bạn
Mostafa Shahverdy

2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- điều này không có nghĩa là nó không dấu. Nó có nghĩa là những gì bạn vừa viết - nó được ký bằng khóa gỡ lỗi.
Dmitry Zaytsev

3
Làm thế nào chúng ta có thể kiểm tra xem nó đã được ký với cùng một tệp chứng chỉ chính xác và không chỉ một tệp có cùng giá trị cho tổ chức, vị trí, v.v.?
OlivierM

1
Cảm ơn. Vì vậy jarsigner -verify -verbose -certs myapp.apk | grep CN= | lessvà chúng ta không nên xem "CN = Android Debug".
rpattabi

70

Sử dụng lệnh console:

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

Bạn có thể tìm thấy apksigner trong ../sdk/build-tools/24.0.3/apksigner.bat. Chỉ dành cho công cụ xây dựng v. 24.0.3 trở lên.

Đồng thời đọc tài liệu google: https://developer.android.com/studio/command-line/apksigner.html


Tôi đã tìm thấy apksignertrong `% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (và mọi phiên bản công cụ xây dựng khác mà tôi đã cài đặt)
Jon

2
Lưu ý rằng apksignerthiếu trong phiên bản 26.0.0của các công cụ xây dựng. Nó được theo dõi trongsuetracker.google.com/issues/62696222 và được cho là đã được sửa trong phiên bản tiếp theo. Cách giải quyết cho đến lúc đó là sử dụng apksignertừ 25.0.3.
Friederbluemle

2
Cập nhật: apksignerđược bao gồm trong phiên bản26.0.1
forresthopkinsa

Cập nhật: APKSigner cũng có trong 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 Tôi tin rằng bạn sẽ tìm thấy nó trong tất cả các bản phát hành trong tương lai :)
Kirill Vashilo

2
để sử dụng đầu ra dài dòng -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo

59

Sử dụng lệnh này: (Jarsigner nằm trong thư mục bin Java của bạn goto java-> jdk-> bin path trong dấu nhắc cmd)

$ jarsigner -verify my_signed.apk

Nếu .apk được ký hợp lệ, Jarsigner sẽ in "jar xác minh"


13
Điều này là không đủ vì cả apks gỡ lỗi và phát hành được ký sẽ cho "jar xác minh". Kiểm tra chi tiết câu trả lời của @ Anass.
rpattabi

Tôi đã thử chính xác lệnh này và nó đã xác minh. Sau đó, như một thử nghiệm, tôi đã đi vào APK và xóa mọi tệp theo nghĩa đen trừ các tệp sig và tệp kê khai, và nó vẫn được xác minh. Vì vậy, một cái gì đó là rất sai ở đây. Tuy nhiên tôi vẫn chưa thử câu trả lời của @ Anass.
orblivion

39

Đơn giản nhất trong tất cả:

keytool -list -printcert -jarfile file.apk

Điều này sử dụng ứng dụng keytool tích hợp sẵn của Java và không yêu cầu trích xuất hoặc cài đặt bất kỳ công cụ xây dựng nào.


Đối với bất kỳ ai không thể chạy keytoolngay lập tức, hãy kiểm tra điều này và có thể thử thêm %JAVA_HOME%\binvào đường dẫn
TT--

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.