사인한 키스토어(keystore) 확인하기

안드로이드 어플리케이션은 .keystore 파일을 이용해 내 앱을 사인(signing)할 수 있다. 앱이나 키스토어(keystore)가 한두개라면 모르겠지만, 각 앱마다 다른 키스토어를 만들었다거나 테스트용, 릴리즈용 등으로 여러개의 앱을 가지고 있다보면 사인이 되긴 된건지, 어떤 키로 사인이 된건지 헷갈린다. (CI 환경을 만들어서 차곡차곡 정리해두면 헷갈리 없겠지만)

사인이 된 앱을 가지고 있고, 이 앱이 어떤 키스토어로 사인이 되었는지 확인하고 싶다면 어떻게 해야할까? 결론부터 이야기하면, 앱과 키스토어의 Certificate fingerprint를 비교하면 된다.

먼저 키스토어에서 fingerprint를 확인해보자.

>keytool -list -keystore my-keystore.keystore
Enter keystore password:

키스토어의 비밀번호를 입력하면 다음과 같이 키스토어에 포함된 alias 들의 정보가 출력된다.

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

my-service, 2016. 10. 19, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 3C:B6:68:E2:8A:EC:9F:16:7E:2C:20:AA:B2:71:12:1B:98:F2:1E:D9

출력된 데이터에서 Certificate fingerprint 부분을 확인한다.

이번에는 사인된 앱에서 Certificate fingerprint를 확인해보자. 키스토어를 확인할 때와 마찬가지로 keytool을 이용한다.

>keytool -list -printcert -jarfile my-app.apk

위와 같이 커맨드라인에서 입력하면, 앱 안의 META-INF 폴더 안의 .RSA 파일에서 인증서 정보를 추출하여 인증서의 정보를 보여준다.

...
Certificate fingerprints:
MD5: D8:2A:99:53:1E:7E:9D:B5:3A:44:FC:2D:99:48:38:17
SHA1: 3C:B6:68:E2:8A:EC:9F:16:7E:2C:20:AA:B2:71:12:1B:98:F2:1E:D9
SHA256: 5E:9C:8E:B8:D0:8E:E7:44:7B:5D:B5:1D:83:1F:D3:80:84:0C:F2:DC:15:DC:71:1E:E6:20:70:D6:B4:7B:9C:AB
...

그 중에서 같은 방법으로 만들어진 Certificate fingerprint를 비교해서 같다면, 이 앱은 이 키스토어로 사인된 것으로 보면 된다.

그리고 위에서 언급했듯이 인증서의 위치가 META-INF/*.RSA로 고정되어 있다. 그러므로, .apk 파일을 압축해제 한 후에 META-INF/*.RSA 파일에 아래 명령어를 실행해도 Certificate fingerprint를 꺼낼 수 있다.

keytool -printcert -file CERT.RSA

참조

“사인한 키스토어(keystore) 확인하기”에 한개의 의견

댓글 남기기

이메일은 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.