Play 앱 서명을 사용해야 하는 이유 Play 앱 서명에 등록하면 영구적인 손실이나 유출로부터 키를 보호할 수 있을 뿐만 아니라 Android App Bundle(.aab)에 대한 개선사항도 이용할 수 있습니다. Google이 App Bundle에서 생성되고 최적화된 배포 APK에 서명하도록 하면 Gemini 모델을 사용하는 자동 보호 및 자동 문자열 번역과 같은 유용한 서비스를 이용할 수 있습니다. 게임 측면에서는 Play Games Sidekick, 다운로드하며 플레이, 유료 타이틀 무료 체험과 같은 추가 자동 서비스에 액세스할 수 있습니다.
Play 앱 서명을 구성하려면 관리자 권한이 있어야 합니다.
핵심 개념
Play 앱 서명을 사용하면 두 가지 키를 다루게 됩니다. 차이점과 기술 형식에 대한 이해는 서드 파티 API의 인증 문제를 방지하는 데 매우 중요합니다.
| 키 유형 | 보유 주체 | 기술 세부정보 및 목적 |
|
업로드 키 |
사용자(키를 안전하게 보관하세요) |
|
| 앱 서명 키 |
Google Play |
|
| 양자 지원 | Google Play |
|
참고: 보안을 극대화하려면 업로드 키와 앱 서명 키가 달라야 합니다.
Google에서 앱에 서명하는 방법: Google에서 앱 서명 키로 APK를 생성하고 서명할 때, apksigner를 사용하여 앱 매니페스트에 스탬프 두 개(com.android.stamp.source 및 com.android.stamp.type)를 추가합니다. 이러한 스탬프를 사용하면 APK를 원래 서명자까지 안전하게 추적할 수 있습니다.
Play 앱 서명 설정하기
설정 프로세스는 신규 앱을 게시하는지 기존 앱을 이전하는지에 따라 다릅니다.
신규 앱
- 새 앱 만들기: 앱이 Google에서 생성한 키를 사용하는 양자 지원 하이브리드 서명에 자동으로 등록됩니다. 또한 Android 16 이하 기기에서 인식되는 서명 블록에 사용되는 별도의 기존 키도 생성합니다.
- 업로드 키 생성: 출시 App Bundle에 서명할 키 저장소를 생성합니다. Android 스튜디오에서 생성하거나 명령줄에서 Java keytool 유틸리티를 사용하면 됩니다.
- App Bundle 업로드: Play Console로 이동하여 새 버전을 준비합니다. 기본적으로 App Bundle을 업로드하면 Google 생성 키를 사용한 양자 지원 하이브리드 서명에 앱이 자동으로 등록됩니다.
- 앱 서명 키 변경(선택사항): 자체 키를 관리하려는 고급 개발자는 공개 테스트 트랙 또는 프로덕션 트랙에서 출시가 이루어지기 전에 이 기본값을 변경할 수 있습니다. Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동으로 이동한 후 앱 서명 키 변경을 클릭하여 이 작업을 수행할 수 있습니다. 그리고 나서 다음 중 하나를 선택할 수 있습니다.
- 이 개발자 계정의 다른 앱과 같은 키 사용
- 앱 서명 키 사본 제공(안내에 따름)
기존 앱의 경우
현재 자체 키를 관리하고 APK를 업로드하는 경우 Play 앱 서명으로 업그레이드하여 App Bundle과 Google Play 개선사항을 활용할 수 있습니다.
- Play Console에서 Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동을 선택합니다.
- 아직 동의하지 않은 경우 서비스 약관에 동의합니다.
- 원본 키 사본 전송: PEPK 도구를 다운로드한 후 통합된 단계별 안내에 따라 저장소에 있는 기존 앱 서명 키를 암호화하고 업로드합니다.
API 제공업체에 등록하기
앱에서 API(예: Google 지도, OAuth, Facebook 로그인)를 사용하는 경우 이러한 서비스는 앱 서명 키의 지문을 사용하여 앱을 인증합니다.
Google에서 최종 APK에 서명하므로 로컬 업로드 키뿐만 아니라 Google에서 보유한 앱 서명 키 지문도 API 제공업체에 등록해야 합니다.
- Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동을 선택합니다.
- 앱 서명 키 섹션으로 스크롤합니다.
- 필요한 지문(SHA-1 또는 SHA-256)을 복사합니다. 앱에서 양자 지원 하이브리드 서명을 사용하는 경우 키 세 개의 지문을 복사하여 각 키를 API 제공업체에 등록해야 합니다. 이때 등록하는 키는 최신 기기에서 사용되는 새 기존 키와 PQC 키, 오래된 기기에서 사용되는 기존 키입니다.
- 이 지문을 API 제공업체의 콘솔(예: Google Cloud 콘솔)에 붙여넣습니다.
도움말: Android App Links를 사용하는 경우 이러한 지문으로 assetlinks.json 파일을 업데이트하세요.
키 관리하기
앱 서명 키 업그레이드
앱 서명 키가 유출되었거나 암호화 강도가 더 높은 키가 필요한 경우 Android 17(API 수준 37) 이상의 모든 설치에 대해 연간 키 업그레이드를 요청할 수 있습니다.
Android 버전별 시행 방식
- Android 17(API 수준 37) 이상: Android 플랫폼은 업그레이드된 양자 지원 하이브리드 키 사용을 엄격하게 시행합니다. APK 서명 스키마 v3.2를 참고하세요.
- Android 13(API 수준 33)~Android 16(API 수준 36): Android 플랫폼은 최신 클래식 키 사용을 엄격하게 시행합니다. APK 서명 스키마 v3.1을 참고하세요.
- Android 7(API 수준 24)~Android 12(API 수준 32): Android 플랫폼 자체는 업그레이드된 키를 시행하지 않으며 여전히 최신 기존 키를 인식합니다. 하지만 Google Play 프로텍트는 사용자가 사용 중지하지 않는 한 앱 업데이트가 최신 클래식 키로 서명되었는지 확인하여 추가적인 검증을 제공합니다.
중요 고려사항
- 공유 데이터: Android S(API 수준 32) 이하는 플랫폼에서 업그레이드된 키를 강제하지 않습니다. 여러 앱에서 동일한 키를 사용하여 데이터를 공유하는 경우 이 이전 Android 버전에서는 맞춤 권한 공유와 같은 기능에 대해 기존 키만 인식합니다.
업그레이드 방법
- Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동을 선택합니다.
- 앱 서명 키 섹션에서 키 업그레이드를 클릭합니다.
- 업그레이드 경로를 선택합니다.
- Google Play에서 새로운 앱 서명 키를 생성하도록 허용(권장)
- 이 개발자 계정의 다른 앱과 동일한 앱 서명 키 사용
- 앱 서명 키 사본 제공(안내에 따름)
- 저장을 클릭합니다.
- API 제공업체에 새로운 키 지문을 등록합니다. 앱에서 양자 지원 하이브리드 서명을 사용하는 경우 새로운 키 2개(새 기존 키와 새 PQC 키)의 지문을 등록해야 합니다.
업로드 키 재설정 요청하기
업로드 키를 분실했거나 유출이 의심되더라도 앱이 잠기지는 않습니다.
- Android 스튜디오에서 새 업로드 키를 생성합니다.
- 인증서를 다음 PEM 형식으로 내보냅니다.
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
(keytool 및 키 저장소 경로에 관한 자세한 내용은 Android 스튜디오 앱 서명 가이드를 참고하세요.) - PEM 파일이 생성되면 Play Console에서 재설정 요청을 제출합니다.
- Google Play로 보호됨 > Play 스토어 보호 > Play 앱 서명 관리로 이동합니다.
- 업로드 키 인증서 섹션에서 업로드 키 재설정 요청을 클릭합니다.
- 재설정 이유를 입력합니다.
upload_certificate.pem파일을 업로드하고 요청을 클릭합니다.
권장사항 및 대체 배포
- 보안: 모든 사용자에게 2단계 인증을 적용하여 Play Console 액세스를 보호하세요.
- App Bundle 개선 사항: Play 앱 서명에 등록하면 App Bundle에 대한 개선 사항을 이용할 수 있습니다. 개선 사항을 적용하려면 먼저 새 버전을 만들 때 필요한 구성을 변경한 다음, 새 App Bundle을 업로드하세요.
- Google Play 외부 배포: 다른 앱 스토어를 통해 배포하고 모든 곳에서 동일한 서명 키를 사용하려면 두 가지 옵션이 있습니다. [1] Google에서 앱 서명 키를 생성하도록 허용한 후 Play Console 또는 Play Developer API에서 서명된 범용 APK를 다운로드하여 다른 곳에 배포할 수 있습니다 (Play Console에서 테스트 및 출시 > 최신 버전 및 번들로 이동하여 App Bundle을 선택하고 다운로드 탭 클릭). 또는 [2] 모든 앱 스토어에 사용할 앱 서명 키를 생성하고 Play 앱 서명을 구성할 때 사본을 Google에 전송할 수 있습니다. 앱 업데이트 작동 방식과 교차 스토어 업데이트를 사용 설정 또는 중지하는 옵션에 관해 자세히 알아보세요.
- 테스트: 내부 앱 공유를 사용하여 Google Play에서 사용자에게 제공하는 항목을 정확하게 테스트하거나, App Bundle 탐색기에서 기기별 APK를 다운로드하고 adb install-multiple *.apk를 사용하여 로컬로 설치합니다.
- APK 서명 스키마 v4: Play 앱 서명은 요건을 충족하는 앱에 v4 서명을 자동으로 사용하여 Android 11 이상 기기에서 최적화된 배포를 지원합니다. 개발자님이 별도로 조치를 취하실 필요는 없습니다. 여기에서는 아직 v4 서명과 호환되지 않는 양자 지원 하이브리드 서명을 사용하는 모든 앱이 제외됩니다. 기술적 이점에 대한 자세한 내용은 APK 서명 스키마 v4 문서를 참고하세요.
자체 호스팅 Google Cloud 프로젝트
매우 구체적인 보안 요구사항(예: OEM 키 사용)이 있는 경우 Play Developer API를 사용하여 자체 호스팅 Google Cloud 프로젝트를 통해 Play 앱 서명에 등록할 수 있습니다.
이 방법은 비표준 설정이며 권장되지 않습니다. 자체 호스팅 프로젝트를 사용하면 사용자가 앱 서명 작업에 대한 모든 책임을 지게 됩니다.
- Google Play에서 재해 복구와 같은 필수 기능을 수행할 수 없습니다.
- Google에서는 기존 버전을 재생성하거나 수정할 수 없습니다. 출시 관련 오류를 수정하려면 새 출시 버전을 업로드해야 합니다.
- 이 구성에서는 고급 최적화, 특정 Google Play 개선 사항, 양자 지원 하이브리드 서명과 같은 보안 기능을 사용하지 못할 수 있습니다.
- 서명 키를 생성하거나 Cloud KMS로 가져오고, 위치가 멀티 리전 미국으로 구성되어 있는지 확인한 후 KMS 키 가져오기 문서를 따릅니다.
- 서명 키를 변경하려면 enrollApp 메서드를 사용합니다. 서명 키는 앱이 공개 테스트 또는 프로덕션 트랙에 출시되기 전에만 변경할 수 있습니다.
- 게시 후 서명 키를 업그레이드하려면 rotateAppSigningKey 메서드를 사용합니다.
- Google Play Developer API로 인증하는 클라이언트 또는 서비스 계정에 다음과 같은 IAM 역할을 부여합니다.
- 암호화 작업을 수행할 수 있는 할당량이 충분한지 확인합니다. 특히 asymmetric_requests의 할당량을 최소 350QPS로 늘리는 것이 좋습니다.
- 서명 키가 사용되는 방식을 확인하려면 Cloud KMS 프로젝트에서 감사 로그를 사용 설정하세요.