Play 앱 서명을 사용해야 하는 이유 Play 앱 서명에 등록하면 키의 영구적인 손실이나 손상으로부터 보호할 수 있을 뿐만 아니라 Android App Bundle(.aab)에 대한 Play 개선사항 도 이용할 수 있습니다. Google에서 App Bundle에서 생성된 최적화된 배포 APK에 서명하도록 하면 Gemini 모델을 사용하는 자동 보호 및 자동 문자열 번역과 같은 유용한 서비스를 이용할 수 있습니다. 게임에서 Play Games Sidekick, 다운로드하며 플레이, 유료 타이틀 무료 체험과 같은 추가 자동 서비스에 액세스할 수 있습니다.
Play 앱 서명을 구성하려면 계정 소유자이거나 프로덕션으로 출시, 기기 제외, Play 앱 서명 사용 권한이 있어야 하며 서비스 약관에 동의해야 합니다.
핵심 개념
Play 앱 서명을 사용하면 서로 다른 두 개의 키를 다루게 됩니다. 차이점과 기술 형식을 이해하는 것은 서드 파티 API의 인증 문제를 방지하는 데 중요합니다.
| 키 유형 | 보유 주체 | 기술 세부정보 및 목적 |
|
업로드 키 |
사용자(안전하게 보관하세요) |
|
| 앱 서명 키 |
Google Play |
|
참고: 보안을 극대화하려면 업로드 키와 앱 서명 키가 달라야 합니다.
Google에서 앱에 서명하는 방법: Google에서 앱 서명 키로 APK를 생성하고 서명할 때 apksigner를 사용하여 앱 매니페스트에 스탬프 두 개(com.android.stamp.source 및 com.android.stamp.type)를 추가합니다. 이러한 스탬프를 사용하면 APK를 원래 서명자로 안전하게 추적할 수 있습니다.
Play 앱 서명 설정하기
설정 프로세스는 새 앱을 게시하는지 기존 앱을 이전하는지에 따라 다릅니다.
새로 설치한 앱
- 업로드 키 만들기: 출시 App Bundle에 서명할 키 저장소를 생성합니다. Android 스튜디오에서 생성하거나 명령줄에서 Java keytool 유틸리티를 사용하면 됩니다.
- App Bundle 업로드: Play Console로 이동하여 새 버전을 준비합니다. 기본적으로 App Bundle을 업로드하면 Play 앱 서명에서 강력한 암호화가 적용된 RSA 4096비트 키를 자동으로 생성하여 앱을 관리하고 보호합니다. 신규 앱의 90% 이상이 이 권장 기본값을 사용하며, 이를 설정하기 위해 추가로 취해야 할 조치는 없습니다.
- 앱 서명 키 변경(선택사항): 자체 키를 관리하려는 고급 개발자는 이 기본값을 변경할 수 있습니다. 버전의 앱 무결성 섹션에서 서명 키 변경을 클릭하거나 Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동으로 이동하여 이 작업을 수행할 수 있습니다. 그런 다음 다음 중 하나를 선택할 수 있습니다.
- 이 개발자 계정의 다른 앱과 같은 키 사용
- 앱 서명 키 사본 제공: 먼저 Play Console에서 Google의 공개 암호화 키를 다운로드합니다. 그런 다음 Play 암호화 비공개 키(PEPK) 도구를 사용하여(컴파일된 도구나 소스 코드를 Play Console에서 직접 다운로드하여 확인하거나 직접 빌드할 수 있음) 저장소에 있는 기존 RSA 키(2048비트 이상)를 안전하게 암호화하고 업로드합니다.
기존 앱의 경우
현재 자체 키를 관리하고 APK를 업로드하는 경우 Play 앱 서명으로 업그레이드하여 App Bundle과 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 제공업체의 콘솔(예: Google Cloud 콘솔)에 붙여넣습니다.
도움말: Android App Links를 사용하는 경우 이러한 지문으로 assetlinks.json 파일을 업데이트하세요.
키 관리
앱 서명 키 업그레이드
앱 서명 키가 손상되었거나 암호화 강도가 더 높은 키가 필요한 경우 Android N(API 수준 24) 이상의 모든 설치에 대해 연간 키 업그레이드를 요청할 수 있습니다.
Android 버전별 시정 조치 작동 방식:
- Android T(API 수준 33) 이상: Android 플랫폼은 업그레이드된 키 사용을 엄격하게 시행합니다.
- Android N(API 수준 24)~Android S(API 수준 32): Android 플랫폼 자체는 업그레이드된 키를 강제하지 않으며 여전히 기존 서명 키를 인식합니다. 하지만 Google Play 프로텍트는 사용자가 사용 중지하지 않는 한 업그레이드된 키로 앱 업데이트에 서명했는지 확인하여 추가 유효성 검사를 제공합니다.
중요 고려사항:
- 공유 데이터: Android S(API 수준 32) 이하에서는 플랫폼에서 업그레이드된 키를 강제하지 않으므로 여러 앱에서 동일한 키를 사용하여 데이터를 공유하는 경우 이러한 이전 Android 버전에서는 맞춤 권한 공유와 같은 기능에 대해 기존 키만 인식합니다.
업그레이드 방법:
- Google Play로 보호됨 > Play 스토어 배포 > Play 앱 서명으로 이동으로 이동합니다.
- '앱 서명 키' 섹션에서 키 업그레이드를 클릭합니다.
- 업그레이드 경로를 선택합니다.
- Google Play에서 새로운 앱 서명 키를 생성하도록 허용(권장)
- 이 개발자 계정의 다른 앱과 같은 앱 서명 키 사용
- 앱 서명 키 사본 제공(안내에 따라)
- 자체 키를 제공하는 경우 apksigner 도구(Android SDK 빌드 도구와 함께 번들로 제공됨)를 사용하여 '키 순환 증빙 자료'를 생성하고 업로드합니다. (여기에서 사용된 플래그에 대한 자세한 내용은 apksigner 명령줄 문서를 참고하세요.)
- apksigner
rotate --out /path/to/new/file --old-signer --ks old-signer-jks --set-rollback true --new-signer --ks new-signer-jks --set-rollback true
- apksigner
- 저장을 클릭하고 API 제공업체에 새 키 지문을 등록합니다.
업로드 키 재설정 요청
업로드 키를 분실했거나 유출이 의심되더라도 앱이 잠기지는 않습니다.
- Android 스튜디오에서 새 업로드 키를 만듭니다.
- 인증서를 PEM 형식으로 내보냅니다.
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
(keytool 및 키 저장소 경로에 관한 자세한 내용은 Android 스튜디오 앱 서명 가이드를 참고하세요.) - 계정 소유자가 Play Console 도움말 양식을 통해 업로드 키 재설정을 요청해야 합니다.
- 메시지가 표시되면
upload_certificate.pem을 업로드합니다.
참고: 업로드 키를 재설정해도 앱 서명 키나 사용자에게는 영향을 미치지 않습니다.
권장사항 및 대체 배포
- 보안: 모든 사용자에게 2단계 인증을 적용하여 Play Console 액세스를 보호하세요.
- Google Play 개선사항: Play 앱 서명에 등록하면 App Bundle에 대한 Play 개선사항을 이용할 수 있습니다. 업데이트를 받으려면 새 버전을 만들 때 필요한 변경사항을 먼저 적용한 다음 새 App Bundle을 업로드하세요.
- Google Play 외부 배포: 다른 앱 스토어를 통해 배포하고 모든 곳에서 동일한 서명 키를 사용하려면 다음 두 가지 옵션이 있습니다. Google에서 앱 서명 키를 생성하도록 허용하고 최신 버전 및 번들에서 서명된 범용 APK를 다운로드하여 다른 곳에 배포하거나(테스트 및 출시 > 최신 버전 및 번들로 이동하여 App Bundle을 선택하고 다운로드 탭 클릭) 모든 앱 스토어에 사용할 앱 서명 키를 생성하고 Play 앱 서명을 구성할 때 Google에 앱 서명 키 사본을 전송할 수 있습니다.
- 테스트: 내부 앱 공유를 사용하여 Google Play에서 사용자에게 제공하는 항목을 정확하게 테스트하거나, App Bundle 탐색기에서 기기별 APK를 다운로드하고 adb install-multiple *
.apk를 사용하여 로컬로 설치합니다. - APK 서명 체계 v4: Play 앱 서명은 자격을 갖춘 앱에 v4 서명을 자동으로 사용하여 Android 11 이상 기기에서 최적화된 배포를 지원합니다. 개발자님이 별도로 조치를 취하실 필요는 없습니다. 기술적 이점에 대한 자세한 내용은 APK 서명 체계 v4 문서를 참고하세요.
- 자체 호스팅 Google Cloud 프로젝트: 매우 구체적인 보안 요구사항(예: OEM 키 사용)이 있는 경우 Play Developer API를 사용하여 자체 호스팅 Google Cloud 프로젝트를 통해 Play 앱 서명에 등록할 수 있습니다. 참고: 이는 권장되지 않는 비표준 설정입니다. 자체 호스팅 프로젝트를 사용하면 앱 서명 작업을 전적으로 책임져야 하며 Google Play에서 재해 복구와 같은 필수 기능을 실행할 수 없습니다.