Android APK가 릴리스 인증서로 서명되었는지 어떻게 확인합니까?


222

Android APK가 릴리스로 서명되고 인증서를 디버그하지 않는지 어떻게 확인할 수 있습니까?


6
키 저장소에 대해 apk의 유효성을 검사하는 스크립트 를 작성 했습니다 .
JohnnyLambada

당신이 있다면 대답을 받아들이십시오.
Rinkal Bhanderi

@JohnnyLambada Mac에서 스크립트를 실행하려면 어떻게해야합니까?
Aaron Azhari

1
@JohnnyLambada 스크립트는 어떻게 실행합니까?
sunil

@sunil 새로운 bash 함수를 생성하는 bash 스크립트입니다. 링크를 따라 파일에 붙여 넣습니다 source thatfile. 스크립트의 주석은 실행 방법을 설명합니다.
JohnnyLambada

답변:


372

이 명령을 사용하십시오 (cmd 프롬프트에서 java <jdk <bin 경로로 이동하십시오)

$ jarsigner -verify -verbose -certs my_application.apk

"CN = Android 디버그"가 표시되면 .apk가 Android SDK에서 생성 된 디버그 키로 서명되었음을 의미합니다 (서명되지 않음). 그렇지 않으면 CN에 대한 항목을 찾을 수 있습니다. 자세한 내용은 http://developer.android.com/guide/publishing/app-signing.html을 참조하십시오.


1
2 개의 diff apk 파일에 대한 명령 실행이 끝날 때 jar로 확인 된 메시지가 나타납니다. 그러나 그것은 1 apk에 대해 CN = "android debug"를 제공하고 다른 apk .got에 대해서는 knw에 대해 다릅니다.
iRunner

3
서명은 어떻게 확인합니까? 시스템의 신뢰할 수있는 CA를 사용합니까? 아니면 jar 파일의 무결성을 검사하는 도구입니까? 감사합니다
Mostafa Shahverdy

2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)-서명되지 않은 것은 아닙니다. 방금 작성한 것을 의미합니다-디버그 키로 서명됩니다.
Dmitry Zaytsev 2016 년

3
조직, 위치 등에 대해 동일한 값을 갖는 파일이 아니라 동일한 정확한 인증서 파일로 서명되었는지 어떻게 확인할 수 있습니까?
OlivierM 2016 년

1
감사. 따라서 jarsigner -verify -verbose -certs myapp.apk | grep CN= | less"CN = Android 디버그"가 표시되지 않아야합니다.
rpattabi

70

콘솔 명령을 사용하십시오.

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

../sdk/build-tools/24.0.3/apksigner.bat에서 apksigner를 찾을 수 있습니다. 빌드 도구 v. 24.0.3 이상에만 해당합니다.

구글 문서도 읽어보십시오 : https://developer.android.com/studio/command-line/apksigner.html


내가 발견 apksigner`에서 % LOCALAPPDATA % \ 안드로이드 \ SDK \ 빌드 도구 \ 25.0.3` (그리고 다른 모든 빌드 도구 버전 내가 설치 한)

2
참고 apksigner버전에서 누락 된 26.0.0빌드 도구. issuetracker.google.com/issues/62696222 에서 추적되며 다음 버전에서 수정 될 예정입니다. 그때까지의 해결 방법은 apksignerfrom에서 사용하는 것 25.0.3입니다.
friederbluemle

2
업데이트 : apksigner버전에 포함되어 있습니다26.0.1
forresthopkinsa

업데이트 : APKSigner도 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2에 있습니다. 모든 향후 릴리스에서 찾을 수 있다고 생각합니다. :)
Kirill Vashilo

2
자세한 출력 사용 -v :./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo

59

이 명령을 사용하십시오 (Jarsigner는 Java bin 폴더에 있으며 cmd 프롬프트에서 java-> jdk-> bin 경로로 이동하십시오).

$ jarsigner -verify my_signed.apk

.apk에 올바르게 서명 된 경우 Jarsigner는 "jar validate"를 인쇄합니다.


13
디버그 및 릴리스 APK가 모두 서명되었으므로 "jar validate"가 제공되기 때문에 이것은 충분하지 않습니다. @ Anass 's answer의 세부 사항을 확인하십시오.
rpattabi

이 명령을 정확히 시도하고 확인했습니다. 그런 다음 실험으로 APK로 가서 sig 파일과 매니페스트를 제외한 모든 파일을 그대로 삭제했지만 여전히 확인되었습니다. 여기 뭔가가 잘못되었습니다. 그러나 아직 @Anass의 답변을 시도하지 않았습니다.
orblivion

39

가장 쉬운 방법 :

keytool -list -printcert -jarfile file.apk

여기에는 Java 내장 키 도구 앱이 사용되며 추출 또는 빌드 도구 설치가 필요하지 않습니다.


keytool즉시 달릴 수없는 사람은 이것을 확인 %JAVA_HOME%\bin하고 경로에 추가해보십시오
TT--

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.