어떤 키 저장소가 앱에 서명하는 데 사용되었는지 어떻게 알 수 있습니까?
나는 서명된 앱과 여러 개의 키 저장소 파일을 가지고 있습니다.앱을 업데이트하고 싶어서 어떤 키가 사용되었는지 확인해야 합니다.
컴퓨터에 있는 다양한 키 저장소와 비교하여 원래 앱에 서명하는 데 사용된 키 저장소를 어떻게 일치시킬 수 있습니까?
먼저 APK의 압축을 풀고 /META-INF/ANDROID_ 파일의 압축을 풉니다.RSA(이 파일은 CERT일 수도 있습니다.RSA, 하지만 하나만 있어야 합니다.RSA 파일).
그런 다음 다음 명령을 실행합니다.
keytool -printcert -file ANDROID_.RSA
다음과 같은 인증서 지문을 얻을 수 있습니다.
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
그런 다음 키 도구를 다시 사용하여 서명 키 저장소의 모든 별칭을 인쇄합니다.
keytool -list -keystore my-signing-key.keystore
별칭 목록과 해당 인증서 지문이 표시됩니다.
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! 이제 apk가 이 키스토어와 'android_key'라는 별칭으로 서명되었음을 확인할 수 있습니다.
키 도구는 Java의 일부이므로 PATH에 Java 설치 디렉토리가 있는지 확인합니다.
Gradle 서명 보고서
각 앱 변형의 서명 정보를 출력하는 가장 쉬운 방법은 Gradle 서명 보고서를 사용하는 것입니다.
./gradlew signingReport
> Task :app:signingReport
Variant: debug
Config: debug
Store: ~/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A5:88:41:04:8D:06:71:6D:FE:33:76:87:AC:AD:19:23
SHA1: A7:89:E5:05:C8:17:A1:22:EA:90:6E:A6:EA:A3:D4:8B:3A:30:AB:18
SHA-256: 05:A2:2C:35:EE:F2:51:23:72:4D:72:67:A5:6C:8C:58:22:2A:00:D6:DB:F6:45:D5:C1:82:D2:80:A4:69:A8:FE
Valid until: Wednesday, August 10, 2044
APK 또는 AAB 서명
Certificate Tool인 Java 7을 할 수 .keytool
파일을 추출하지 않고 키 저장소 또는 APK의 서명을 확인합니다.
# APK file
keytool -printcert -jarfile app.apk
# AAB file
keytool -printcert -jarfile app.aab
파일의 소유자, 됩니다.app.apk
파일 파일 AAB 파일app.aab
.
:-jarfile
인수는 Java 7에서 도입되었습니다. 자세한 내용은 설명서를 참조하십시오.)
키 저장소의 서명
마찬가지로 응용프로그램 서명에 사용된 키 저장소의 서명을 확인할 수 있습니다.
keytool -list -v -keystore release.jks
에는 키 파일의 됩니다.release.jks
인증서 지문(MD5, SHA1 및 SHA256)을 포함합니다.
앱 서명 재생을 사용하는 경우 업로드 키가 Google Play에서 앱 서명에 사용하는 키와 다를 수 있습니다.이 경우 Google Play Console의 Release > Setup > App Integrity 페이지에서 앱 서명을 확인할 수 있습니다.
사이트 Google 개발자 사이트에 되어 있습니다.
https://developers.google.com/android/guides/://developers.google.com/android/guides/client-auth
결론적으로
APK와 키 저장소 사이의 SHA1 지문이 일치하는 경우 해당 앱이 키로 서명되었음을 확신할 수 있습니다.
Paul Lammertsma의 답변을 기반으로 하기 위해, 이 명령어는 현재 dir에 있는 모든 APK의 이름과 서명을 인쇄합니다(나중에 출력을 grep에 파이프로 연결해야 하므로 sh를 사용합니다).
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
샘플 출력:
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
아니면 SHA1만 신경 쓴다면,
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
샘플 출력:
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
이 작업을 수행할 수 있습니다.apksigner
Android SDK의 일부인 도구:
apksigner verify --print-certs my_app.apk
빌드 도구 디렉토리 내에서 pksigner를 찾을 수 있습니다.예:~/Library/Android/sdk/build-tools/29.0.1/apksigner
서명 인증서를 훨씬 쉽게 볼 수 있는 방법:
jarsigner.exe -verbose -verify -certs myapk.apk
이렇게 하면 DN만 표시되므로 동일한 DN을 가진 인증서가 두 개 있으면 지문별로 비교해야 할 수도 있습니다.
KeyStore Explorer와 같은 인증서 및 키 저장소를 검사할 수 있는 많은 자유 소프트웨어가 있습니다.
apk의 압축을 풀고 META-INF/?를 엽니다.RSA 파일은 CERT 또는 Android이거나 다른 파일일 수 있습니다.그러면 apk와 관련된 모든 정보가 표시됩니다.
언급URL : https://stackoverflow.com/questions/11331469/how-do-i-find-out-which-keystore-was-used-to-sign-an-app
'programing' 카테고리의 다른 글
MySQL 테이블에 대해 '너무 많은' 행은 몇 개입니까? (0) | 2023.08.06 |
---|---|
Javascript 변수를 PHP POST에 전달 (0) | 2023.08.01 |
항상 Android:configChanges="키보드 숨김|방향"을 사용하지 않는 이유는 무엇입니까? (0) | 2023.08.01 |
sysbench 누적 요약을 csv로 변환 (0) | 2023.08.01 |
jQuery: 이미지가 존재하는지 확인합니다. (0) | 2023.08.01 |