개발 Tip

[안드로이드] Debug, Release, Google Signing ...Keystore? 뭐하는 녀석이지?

삐질 2020. 2. 12. 21:09

 

안녕하세요 개발자 삐질입니다.
 
오늘 전달드릴 내용의 주제는 바로 키스토어(KeyStore)입니다.
열쇠..? 열쇠스토어?..? 열쇠판매점?
 
키스토어가 뭔지 간단하게 알아보겠습니다.
 
서명 이미지 검색결과
  1. 키스토어란, 우리가 흔히 안드로이드 앱을 개발하고 내가 만든거야! 라고 서명하는데 필요한 암호화된 파일입니다.
  2. 키스토어는 말 드대로 열쇠! 이기 때문에, 설치파일(APK)를 인증하기 위해서는 꼭 맞는 반드시 동일한 파일이여야 합니다.
 
무슨 말인고 하니 ~  안드로이드 앱 개발 후 사용자에게 까지 나의 앱이 도달하는 경로는 다음과 같습니다.
 
  1. 열심히 개발
  2. PlayConsole에 등록
  3. PlayStore배포 
  4. 사용자 다운로드
  5. 욕 먹기
 
플레이스토어 이미지 검색결과    
 
여기서 키스토어는 위에서 언급된 것 처럼 증명을 하는 도구입니다. 왜 굳이 증명을 해야하나?
  • 누군가가 내 APK를 변조해서 마치 내 앱인양, 내가 의도한 기능과는 다른 기능으로 동작하도록 함 (아주 불순해..)
바로 이 문제때문입니다. 계약서 작성할 때도 효력이 유효하기 위해서는 내 자필 서명을 하죠??
 
흔히 안드로이드 개발자는 3가지의 키스토어라는 용어를 듣습니다.
  1. 디버깅용 키스토어
  2. 릴리즈용 키스토어 ( 업로드용 키스토어)
  3. 구글 사이닝 키스토어
각각의 모드에 따라 APK를 서명하는데 들어가는 키스토어의 종류가 다릅니다. 다 같으면 나는 개발용으로 테스트했는데 이게 적용되지 않아야 할 릴리즈모드에 적용되거나 오작동을 일으킬 수 있겠죠?
 
디버깅용 키스토어는 -> 보편적으로 정식 상용버전이 아닌, 개발용도의 목적으로 서명할 떄 필요한 키스토어입니다. 일반적으로 내가 사용하고있는 JDK가 가지고있는 키스토어를 사용해 서명하게 됩니다.
이 경우는 각자의 개발환경마다 고유한 파일이기 때문에 또 자바(JDK)에서 제공하는 범용 키스토어이기 때문에 따로 개개인이 암호를 설정해줄 필요는 없습니다.
 
릴리즈용 키스토어는 -> 실제 서비스를 위한 키스토어입니다. 이 모드는 나 이외의 사용자가 인증 또는 서명할 수 없는 상태이며 , PC환경에 상관없이 1개의 키스토어로써 서명을 진행하게 됩니다.
추가적으로 키스토어의 주인이 암호 또는 일련의 과정을 더합니다. 절대 분실해서는 안됩니다. ( 구글에서 공식적으로는 1회밖에 해결 안 해줌...또르륵)
 
구글 사이닝 키스토어 -> 구글 사이닝 키스토어는 기존에 안드로이드 서명 및 배포 방식에서는 없던 방법입니다. 하지만 요 몇년전 키스토어 관리 또는 인증에 있어 이슈들이 다발적으로 발생했고
구글에서는 한 가지 방법을 개발자들에게 제시하게 됩니다. "야 최종 앱 안전하게 서명하는거 우리가 해 줄게 , 대신 니네가 원래 릴리즈(실 서비스)용으로 서명하던 키스토어는 딱 우리 Play Console에 업로드할 때만 쓰는  Upload 키스토어로 써 !! " 이렇게 말입니다. 
 
개발자 및 서비스 제공자는 구글 사이닝 키스토어를 사용할지 아닐지 선택할 수 있습니다. 구글 측에서는 적극적으로 구글 사이닝을 권하는 추세이며 대부분 진행하는 곳이 많습니다.
 
하지만, 무조건 적으로 좋다고 볼수는 없으며, 키스토어를 통한 보안적인 측면을 직접적으로 컨트롤 하고 싶다면  본인이 기존에 가지고있던 릴리즈용 키스토어를 계속 최종 배포용으로 사용할 수 있습니다.
 
여기까지 간단하게 키스토어의 내용을 알아보았습니다. 추가적으로  아주 자주 듣는 질문이 있습니다
 
Q. 스토어에 배포하고 다운받아보니 카카오 맵이나 구글맵이나 동작하지 않아요! ( 그 외 외부 SDK연동 )
 
A. 위 언급처럼 각 모드에 따라 암호화된 키스토어는 다릅니다. 그 키스토어가 가지고 있는 해시값 또한 다릅니다.
보통 이 경우 플랫폼의 사이트에서 키스토어의 해시값을 등록하는 절차가 있었을텐데, 기존의 개발모드의 키스토어 해시값은 등록이 되었으나, 배포 시 , 릴리즈용 키스토어 해시값을 등록하지 않으면 이런 현상이 발생합니다.
 
 
 
초급 안드로이드 개발자를 위한 카카오톡 오픈 채팅방을 운영 중 입니다. (최소한의 예의를 지켜주십시오)