apk 재서명



  요약


JDK에 포함된 jarsigner를 이용해 jar파일 또는 안드로이드 apk파일에 서명하는 경우 발생하는 타임 스탬프관련 경고 메시지를 없애는 방법



  증상 및 원인


jarsigner를 이용해 리패키징한 안드로이드 apk파일에 서명하던 도중 아래와 같은 경고 메시지를 발견했다. 서명은 정상적으로 되었기 때문에 무시해도 상관없으나 왠지 찜찜하여 원인과 해결 방법을 알아보았다.


Warning:

No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date <yyyy-mm-dd> or after future revocation date.


< 발생한 경고 메시지 >




서명 인증서가 만료되면 배포 된 파일을 다시 서명해야 하기 때문에 이런한 문제를 해결하기 위해 재서명이 필요없는 URL 기반 인증 방식인 타임 스탬프를 이용한 서명을 권장하는 것으로 확인된다. 관련 Oracle 문서에는 J2SE 5.0부터 추가 된 기능이라고 나와있으나 기존에 사용하던 JDK 버전(1.7021)에서는 경고 없이 서명이 되었던걸로 보아 이후 버전에서 발생하는 것으로 보인다.



  해결 방법


서명 시, -tsa 옵션과 함께 인증 기관 URL을 입력해주면 경고 메시지 없이 서명이 가능하다.


-tsa http://timestamp.digicert.com


< Timestamp를 이용한 서명 결과 >



  관련 포스팅




 

 

기존의 apk파일을 별도의 프로그램 없이 리패키징하는 방법입니다.

 

 


 

먼저 apk파일의 확장자를 zip으로 변경 후 압축을 풀어줍니다.


파일의 확장자가 보이지 않는 경우, 


도구 - 폴더 옵션의 보기 탭에서 '알려진 파일 형식의 파일 확장명 숨기기' 항목을 선택 해제합니다.

 

 

 

 

 

압축을 풀고 나면 다음의 구성요소들을 확인할 수 있습니다.

 




 assets

 패키지 내에 포함된 비 리소스 파일 

 META-INF

 apk 배포시 서명한 내용. 

파일 변조 시 패키지 손상 오류가 뜨며 기기에 설치가 되지 않음

 res

 리소스 파일

 AndroidManifest.xml

 Manifest

 classes.dex

 달빅에서 동작하는 컴파일 된 실행 파일

 resouces.arsc

 컴파일 된 리소스 파일



assets과 res 폴더에는 파일이 그대로 들어있기 때문에 수정 및 변경이 가능합니다.


소스코드의 경우 별도의 디컴파일 툴들(Dex2jar, JD-GUI, Apk manager, Apktool 등)을

 

사용해야만 확인할 수 있습니다.

 

 

수정이 끝나면 기존 서명은 효력을 잃게 되기 때문에 


패키지 폴더 내의 'META-INF' 폴더를 삭제한 후 다시 zip파일로 압축해줍니다. 


이 때, 고급설정 - 압축방법 - 압축 안함 옵션을 선택해 압축합니다. (알집의 경우)

 

 

 

 

마지막으로, zip파일 확장자를 다시 apk로 변경 후 재서명하면 리패키징이 완료됩니다.


서명을 위해 JDK 내에 포함된 'jarsigner'를 사용합니다.


cmd창에서 다음의 명령어 입력 후 패스워드를 입력하면 서명이 완료됩니다.

 

> jarsigner -verbose -keystore [your keystore file] [your apk file.apk] [your keystore alias]

 


JDK가 설치되어 있지 않을 경우, 아래의 링크에서 사용하는 OS에 맞게 다운받아 설치합니다.


Download JDK



JDK 설치 이후에도 아래와 같은 문제 발생 시,


'고급 시스템 설정' 창에서 '환경 변수'를 클릭하여 시스템 변수 목록에서 Path를 찾습니다.

가장 끝에 ';[JDK 설치 경로]\bin'을 추가한 뒤 cmd를 재실행하면 해결됩니다.




 


+ Recent posts