Play 앱 서명을 사용하려면 프로덕션으로 출시, 기기 제외, Play 앱 서명 사용 권한이 있는 계정 소유자 또는 사용자여야 하며 Play 앱 서명 서비스 약관에 동의해야 합니다.
작동 방식
Play 앱 서명을 사용하면 Google에서 자체 키를 저장하는 데 사용하는 인프라와 동일한 보안 인프라에 앱 서명 키가 저장되며 Google 키 관리 서비스로 보호됩니다. Google 인프라에 관해 자세히 알아보려면 Google Cloud 보안 백서를 참고하세요.
Android 앱은 비공개 키로 서명됩니다. 앱 업데이트를 신뢰할 수 있도록 하기 위해 모든 비공개 키에는 기기 및 서비스에서 앱 업데이트가 동일한 소스로부터 게시되었는지 확인하는 데 사용하는 관련 공개 인증서가 있습니다. 기기는 업데이트의 서명이 설치된 앱의 서명과 일치할 때만 업데이트를 수락합니다. Google이 앱 서명 키를 관리하도록 허용함으로써 이 프로세스를 더욱 안전하게 만들 수 있습니다.
참고: 2021년 8월 이전에 만들어진 앱의 경우 Play 앱 서명을 사용하여 Android App Bundle로 게시하는 대신 계속 APK를 업로드하고 자체 키를 관리할 수 있습니다. 하지만 키 저장소를 분실하거나 도난당하면 새로운 패키지 이름으로 새 앱을 게시해야만 앱을 업데이트할 수 있습니다. 이러한 앱의 경우 Play에서는 Play 앱 서명을 사용하여 App Bundle로 전환할 것을 권장합니다.
키, 아티팩트, 도구 설명용어 | 설명 |
---|---|
앱 서명 키 |
Google Play에서 사용자 기기로 전달되는 APK 서명에 사용하는 키입니다. Play 앱 서명을 사용하면 기존 앱 서명 키를 업로드하거나 Google에서 자동 생성하도록 할 수 있습니다. 앱 서명 키는 비공개로 유지되지만 앱의 공개 인증서는 다른 사람과 공유할 수 있습니다. |
업로드 키 |
Google Play에 업로드하기 전에 App Bundle에 서명하는 데 사용하는 키입니다. 업로드 키는 비공개로 유지되지만 앱의 공개 인증서는 다른 사람과 공유할 수 있습니다. 보안상의 이유로 서로 다른 앱 서명 키와 업로드 키를 사용하는 것이 좋습니다. 업로드 키를 생성하는 방법은 두 가지입니다.
|
인증서(.der 또는 .pem ) |
인증서에는 공개 키와 키 소유자에 관한 추가 식별 정보가 포함되어 있습니다. 공개 키 인증서를 사용하면 누구나 App Bundle이나 APK에 서명한 사람을 확인할 수 있으며 비공개 키가 포함되어 있지 않으므로 이를 다른 사람과 공유할 수 있습니다. API 제공업체에 키를 등록하려면 Play Console의 Play 앱 서명 페이지(테스트 및 출시 > 설정 > 앱 서명)에서 앱 서명 키와 업로드 키의 공개 인증서를 다운로드하면 됩니다. 공개키 인증서는 다른 사람과 공유할 수 있으며 비공개 키를 포함하지 않습니다. |
인증서 지문 |
짧고 고유한 인증서 표현 형식으로 API 제공업체가 패키지 이름과 함께 요청하는 경우가 많습니다. 앱을 제공업체 서비스에 등록하는 데 사용됩니다. 업로드 및 앱 서명 인증서의 MD5, SHA-1, SHA-256 디지털 지문은 Play Console의 Play 앱 서명 페이지(테스트 및 출시 > 설정 > 앱 서명)에서 찾을 수 있습니다. 같은 페이지에서 원래 인증서(.der )를 다운로드하여 다른 디지털 지문으로 변환할 수도 있습니다. |
Java 키 저장소(.jks 또는 .keystore ) |
보안 인증서 및 비공개 키의 저장소입니다. |
Play 암호화 비공개 키(PEPK) 도구 |
Java 키 저장소에서 비공개 키를 내보내고 암호화하여 Google Play로 전송하는 도구입니다. Google에서 사용할 앱 서명 키를 제공할 때 키(필요한 경우 공개 인증서도 포함)를 내보내고 업로드하는 옵션을 선택하여 안내에 따라 도구를 다운로드하고 사용합니다. 원하는 경우 PEPK 도구의 오픈소스 코드를 다운로드, 검토 및 사용할 수 있습니다. |
절차는 다음과 같습니다.
- App Bundle에 서명하고 Play Console에 업로드합니다.
- Google에서는 App Bundle로부터 최적화된 APK를 생성하고 앱 서명 키로 이에 서명합니다.
- Google은 apksigner를 사용하여 앱 매니페스트에 스탬프 두 개(
com.android.stamp.source
,com.android.stamp.type
)를 추가한 다음 앱 서명 키로 APK에 서명합니다. apksigner로 추가된 스탬프를 통해 APK에 서명한 사람을 추적할 수 있습니다. - Google에서 서명된 APK를 통해 앱을 게시하고 사용자에게 표시합니다.
Play 앱 서명 설정 및 관리하기
아직 앱에서 Play 앱 서명을 사용하지 않는다면 아래 안내를 따르세요.
1단계: 업로드 키 만들기
- 안내에 따라 업로드 키를 만듭니다.
- 업로드 키로 App Bundle에 서명합니다.
2단계: 버전 준비하기
- 안내에 따라 버전을 준비하고 출시합니다.
- 출시 트랙을 선택한 후 '앱 무결성' 섹션에 앱의 Play 앱 서명 상태가 표시됩니다.
- Google에서 생성한 앱 서명 키로 계속 진행하려면 App Bundle을 업로드합니다. 또는 앱 서명 키 변경을 선택하여 다음 옵션에 액세스할 수 있습니다.
- Google에서 생성한 앱 서명 키 사용: 신규 앱의 90% 이상이 Google에서 생성한 앱 서명 키를 사용합니다. Google에서 생성한 키를 사용하면 분실이나 유출이 방지됩니다(키를 다운로드할 수 없음). 이 옵션을 선택하면 다른 배포 채널에 관해 Google 생성 키로 서명된 App Bundle 탐색기에서 배포 APK를 다운로드하거나 다른 키를 사용할 수 있습니다.
- 다른 앱 서명 키 사용: 앱 서명 키를 선택하면 개발자 계정의 다른 앱과 같은 키를 사용하거나 유연성 개선을 위해 앱 서명 키의 로컬 사본을 유지할 수 있습니다. 예를 들어 앱이 일부 기기에 사전 설치되어 있으므로 이미 키가 결정되었을 수 있습니다. Google 서버 외부에 키 사본이 있으면 로컬 사본이 손상될 경우 위험이 높아집니다. 다른 키를 사용하는 방법에 관한 옵션은 다음과 같습니다.
- 이 개발자 계정의 다른 앱과 같은 앱 서명 키 사용
- Java 키 저장소의 키 내보내기 및 업로드
- 키 내보내기 및 업로드(Java 키 저장소를 사용하지 않음)
- Play 앱 서명을 선택 해제합니다. 이 옵션은 Play 앱 서명에 등록하기 위해 앱 서명 키를 업그레이드하려는 경우에만 선택해야 합니다.
- 나머지 안내를 따라 버전을 준비하고 출시합니다.
참고: 계속하려면 서비스 약관에 동의하고 앱 서명을 선택해야 합니다.
3단계: API 제공업체에 앱 서명 키 등록하기
앱에서 API를 사용하는 경우 일반적으로 인증서의 지문을 사용하여 인증 목적으로 앱 서명 키를 API에 등록해야 합니다. 인증서를 찾을 수 있는 위치는 다음과 같습니다.
- Play Console을 열고 Play 앱 서명 페이지(테스트 및 출시
> 설정 > 앱 서명)로 이동합니다.
- 도움말: 개발자가 의도한 방식대로 앱과 게임을 경험하도록 도와주는 무결성 및 서명 서비스가 포함된 앱 무결성 페이지(테스트 및 출시 > 앱 무결성)를 통해서도 이 페이지에 액세스할 수 있습니다.
- ‘앱 서명 키 인증서’ 섹션으로 스크롤하고 앱 서명 인증서의 디지털 지문(MD5, SHA-1, SHA-256)을 복사합니다.
- API 제공업체가 다른 유형의 지문을 요구하면
.der
형식의 원래 인증서를 다운로드하고 API 제공업체가 요구하는 변환 도구를 사용하여 변환할 수 있습니다.
- API 제공업체가 다른 유형의 지문을 요구하면
Google 생성 키를 사용하면 Google에서 강력한 암호화가 적용된 RSA 키(4096비트)를 자동으로 생성합니다. 자체 앱 서명 키를 업로드하려는 경우 2048비트 이상의 RSA 키여야 합니다.
1단계: Play 앱 서명 구성
- Play Console을 열고 Play 앱 서명 페이지(테스트 및 출시
> 설정 > 앱 서명)로 이동합니다.
- 도움말: 개발자가 의도한 방식대로 앱과 게임을 경험하도록 도와주는 무결성 및 서명 서비스가 포함된 앱 무결성 페이지(테스트 및 출시 > 앱 무결성)를 통해서도 이 페이지에 액세스할 수 있습니다.
- 아직 동의하지 않은 경우 Play 앱 서명 서비스 약관을 검토하고 동의를 선택합니다.
2단계: Google에 원래 키 사본 전송 및 업로드 키 만들기
- 원래 앱 서명 키를 찾습니다.
- Play Console을 열고 Play 앱 서명 페이지(테스트 및 출시 > 설정 > 앱 서명)로 이동합니다.
- 출시 프로세스에 가장 적합한 내보내기 및 업로드 옵션을 선택하고 기존 앱 서명 키를 업로드합니다.
3단계: 업로드 키 만들기(선택사항 및 권장)
- 업로드 키를 만들고 인증서를 Google Play에 업로드합니다.
- 앱 서명 키를 업로드 키로 계속 사용할 수도 있습니다.
- 앱 서명 인증서의 지문(MD5, SHA-1 및 SHA-256)을 복사합니다.
- 테스트를 위해 인증서 지문 및 앱 서명 키를 사용하여 업로드 키 인증서를 API 제공업체에 등록해야 할 수 있습니다.
4단계: 업로드 키로 다음 앱 업데이트에 서명하기
앱 업데이트를 출시하면 업로드 키를 사용하여 서명해야 합니다.
- 새로운 업로드 키를 생성하지 않은 경우: 원래 앱 서명 키를 계속 사용하여 Google Play에 업로드하기 전에 App Bundle에 서명합니다. 원래 앱 서명 키를 분실했다면 새 업로드 키를 생성하고 Google에 등록하여 계속 앱을 업데이트할 수 있습니다.
- 새 업로드 키를 생성한 경우: 새 업로드 키를 사용하여 버전을 Google Play에 업로드하기 전에 App Bundle에 서명합니다. Google은 업로드 키를 사용하여 신원을 확인합니다. 업로드 키를 분실하면 지원팀에 문의하여 재설정할 수 있습니다.
기존 키를 공유할 수 없는 경우 앱 서명 키를 업그레이드하는 것이 좋습니다. 등록할 앱 서명 키를 업그레이드하기 전에 다음 사항에 유의하세요.
- 이 옵션을 사용하려면 이중 출시 버전이 필요합니다.
- 모든 출시 버전에 App Bundle과 기존 키로 서명된 APK를 업로드해야 합니다. Google Play는 App Bundle을 사용하여 Android R*(API 수준 30) 및 이후 기기에 새 키로 서명된 APK를 생성합니다. 기존 APK는 이전 Android 출시 버전(API 수준 29까지)에 사용됩니다.
*앱에서 sharedUserId
를 사용하는 경우 Android T(API 수준 33) 이상을 실행하는 기기에 설치 및 업데이트용 키 업그레이드를 적용하는 것이 좋습니다. 이를 구성하려면 번들 구성에서 정확한 최소 SDK 버전을 설정하세요.
1단계: 새 키 업로드 및 키 순환 증빙 자료 생성/업로드하기
Android 기기에서 새 키를 신뢰하려면 저장소에서 새 서명 키를 업로드하고 다음과 같이 키 순환 증빙 자료를 생성하고 업로드해야 합니다.
- Play Console을 열고 Play 앱 서명 페이지(테스트 및 출시
> 설정 > 앱 서명)로 이동합니다.
- 도움말: 개발자가 의도한 방식대로 앱과 게임을 경험하도록 도와주는 무결성 및 서명 서비스가 포함된 앱 무결성 페이지(테스트 및 출시 > 앱 무결성)를 통해서도 이 페이지에 액세스할 수 있습니다.
- 앱 서명 탭을 선택합니다.
- 고급 옵션 표시를 클릭하고 새 앱 서명 키 사용(지속적인 이중 출시 버전이 필요함)을 선택합니다.
- 개발자 계정의 다른 앱과 동일한 앱 서명 키를 사용하거나 Android 스튜디오, 자바 키 저장소, 다른 저장소에서 새 앱 서명 키를 업로드합니다.
- 화면에 표시된 안내에 따라 PEPK 도구를 다운로드하고 실행합니다.
- ZIP 파일이 준비되면 생성된 ZIP 업로드를 클릭하여 Play Console에 업로드합니다.
- '5. 키 순환 증빙 자료를 업로드하여 Android 기기에서 새 키를 신뢰하도록 허용합니다.' 옆에 있는 안내 표시를 클릭합니다.
- 다음 명령어를 실행하여 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
- 생성된 키 순환 증빙 자료 파일 업로드를 클릭하고 8단계에서 생성된 키 순환 증빙 자료를 업로드합니다.
- 저장을 클릭합니다.
업로드 키 만들기 및 키 저장소 업데이트하기
보안 강화를 위해 앱 서명 키 대신 새로운 업로드 키로 앱에 서명하는 것이 좋습니다.
Play 앱 서명을 선택할 때 업로드 키를 만들거나 나중에 Play 앱 서명 페이지(테스트 및 출시 > 설정 > 앱 서명)를 방문하여 업로드 키를 만들 수 있습니다.
업로드 키를 만드는 방법은 다음과 같습니다.
- Android 개발자 사이트에서 안내를 따릅니다. 안전한 곳에 키를 저장하세요.
- 업로드 키의 인증서를 PEM 형식으로 내보냅니다. 밑줄 표시된 다음 인수를 바꿉니다.
$ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
-
출시 프로세스에서 메시지가 나타나면 인증서를 업로드하여 Google에 등록합니다.
업로드 키를 사용하는 경우:
- 업로드 키는 Google에만 등록되며 앱 제작자의 신원 인증에 사용됩니다.
- 서명은 사용자에게 전송되기 전에 업로드된 모든 APK에서 삭제됩니다.
- 2048비트 이상의 RSA 키여야 합니다.
업로드 키를 만든 후 확인하고 업데이트할 수 있는 몇 개의 위치는 다음과 같습니다.
- 로컬 기기
- 잠긴 온사이트 서버(다양한 ACL)
- 클라우드 기기(다양한 ACL)
- 전용 비밀 관리 서비스
- (Git) 저장소
앱 서명 키 업그레이드
경우에 따라 앱 서명 키 업그레이드를 요청할 수 있습니다.
앱 서명 키 업그레이드를 요청하는 몇 가지 이유는 다음과 같습니다.
- 암호화 강도가 더 높은 키가 필요한 경우
- 앱 서명 키가 해킹된 경우
중요: 키 업그레이드는 App Bundle을 사용하는 앱에서만 지원됩니다.
Play Console에서 키 업그레이드를 요청하기 전에 아래 키 업그레이드를 요청하기 전의 주요 고려 사항 섹션을 읽어보세요. 그런 다음 아래의 다른 섹션을 펼쳐 키 업그레이드 요청에 관해 자세히 알아볼 수 있습니다.
키 업그레이드를 요청하기 전의 주요 고려사항키 업그레이드를 요청하기 전에 업그레이드 완료 후 필요한 변경사항을 숙지해야 합니다.
- 여러 앱에 같은 앱 서명 키를 사용하여 앱 간에 데이터/코드를 공유하려면 앱을 업데이트해야 새로운 앱 서명 키 인증서와 기존 앱 서명 키 인증서를 인식할 수 있습니다. Android S(API 수준 32) 이하를 실행하는 기기에서는 Android 플랫폼에서 데이터/코드 공유 목적으로 기존 앱 서명 키 인증서만 인식합니다.
- 앱이 API를 사용하는 경우, API 제공업체에 새 앱 서명 키와 기존 앱 서명 키의 인증서를 등록한 후 업데이트를 게시해야 API가 계속해서 정상적으로 작동합니다. 인증서는 Play Console의 Play 앱 서명 페이지(테스트 및 출시 > 설정 > 앱 서명)에서 확인할 수 있습니다.
- 사용자가 P2P 공유를 통해 업데이트를 설치하는 경우 이미 설치한 앱 버전과 같은 키로 서명된 업데이트만 설치할 수 있습니다. 다른 키로 서명한 앱 버전이 설치되어 있어서 앱을 업데이트할 수 없는 경우 앱을 제거 후 재설치하면 업데이트를 받을 수 있습니다.
각 앱은 Android N(API 수준 24)의 모든 설치에 대해 앱 서명 키를 1년에 한 번 업그레이드할 수 있습니다.
키 업그레이드를 요청하는 데 성공하면 모든 설치 및 앱 업데이트에 새 키를 사용하여 서명하게 됩니다. Android T(API 수준 33) 이상을 실행하는 기기에서 Android 플랫폼은 업그레이드된 키 사용을 시행합니다. Android S(API 수준 32) 이하를 실행하는 기기에서 Android 플랫폼은 업그레이드된 키의 사용을 강제하지 않으며 여전히 기존 서명 키를 앱의 서명 키로 인식합니다. 여기에는 앱의 서명 키를 사용하는 모든 Android 플랫폼 기능(예: 맞춤 권한 공유)도 포함됩니다. Android N(API 수준 24)~Android S(API 수준 32)를 실행하는 기기에서는 사용자가 사용 중지하지 않는 한 Google Play 프로텍트가 업그레이드된 키로 앱 업데이트에 서명했는지 확인합니다. Android 플랫폼은 Android S(API 수준 32) 이하를 실행하는 기기에서 업그레이드된 키 사용을 강제하지 않으므로 이렇게 하면 추가적인 검증이 가능합니다.
- Play Console을 열고 Play 앱 서명 페이지(테스트 및 출시
> 설정 > 앱 서명)로 이동합니다.
- 도움말: 개발자가 의도한 방식대로 앱과 게임을 경험하도록 도와주는 무결성 및 서명 서비스가 포함된 앱 무결성 페이지(테스트 및 출시 > 앱 무결성)를 통해서도 이 페이지에 액세스할 수 있습니다.
- '앱 서명 키 업그레이드' 카드에서 키 업그레이드 요청을 선택합니다.
- Android N 이상의 모든 설치에 대해 앱 서명 키를 업그레이드하는 옵션을 선택합니다.
- Google에서 신규 앱 서명 키를 생성하도록 하거나(권장) 앱 서명 키를 직접 업로드합니다.
- 앱 서명 키와 업로드 키로 동일한 키를 사용했다면 앱 서명 키를 업그레이드한 후 기존 앱 서명 키를 업로드 키로 계속 사용하거나 업로드 키를 새로 생성할 수 있습니다.
- 앱 서명 키 업그레이드를 요청하는 이유를 선택합니다.
- 필요하다면 API 제공업체에 새 앱 서명 키를 등록합니다.
도움말: 여러 배포 채널에 앱을 배포하고 사용자에게 앱 업데이트 호환성을 극대화하려면 각 배포 채널에서 키를 업그레이드해야 합니다. Google Play의 키 업그레이드와 호환되도록 하려면 Android SDK 빌드 도구(버전 33.0.1 이상)와 함께 번들로 제공되는 ApkSigner 도구를 사용하세요.
$ apksigner sign --in ${INPUT_APK}
--out ${OUTPUT_APK}
--ks ${ORIGINAL_KEYSTORE}
--ks-key-alias ${ORIGINAL_KEY_ALIAS}
--next-signer --ks ${UPGRADED_KEYSTORE}
--ks-key-alias ${UPGRADED_KEY_ALIAS}
--lineage ${LINEAGE}
앱 업데이트 작동 방식을 자세히 알아보세요.
권장사항
- 앱을 Google Play 외부에 배포하거나 향후 배포할 계획이 있으며 같은 서명 키를 사용하려는 경우 다음 두 가지 옵션이 있습니다.
- Google에서 키를 생성(권장)한 다음 App Bundle 탐색기에서 서명된 범용 APK를 다운로드하여 Google Play 외부에 배포합니다.
- 또는 모든 앱 스토어에 사용할 앱 서명 키를 생성한 다음 Play 앱 서명을 구성할 때 Google에 앱 서명 키 사본을 전송할 수 있습니다.
- 계정을 보호하려면 Play Console에 액세스할 수 있는 계정에 2단계 인증을 사용합니다.
- App Bundle을 출시 트랙에 게시한 후 App Bundle 탐색기를 사용하여 Google이 App Bundle에서 생성하는 설치 가능한 APK에 액세스할 수 있습니다. 옵션은 다음과 같습니다.
- 내부 앱 공유 링크를 복사하여 공유합니다. 이렇게 하면 탭 한 번으로 Google Play가 다른 기기의 App Bundle에서 설치할 항목을 테스트할 수 있습니다.
- 서명된 범용 APK를 다운로드합니다. 이 단일 APK는 Google이 보유한 앱 서명 키로 서명되고 앱이 지원하는 모든 기기에 설치할 수 있습니다.
- 특정 기기의 모든 APK가 포함된 ZIP 파일을 다운로드합니다. 이러한 APK는 Google이 보유한 앱 서명 키로 서명되고,
adb install-multiple *.apk
명령어를 사용하여 기기의 ZIP 파일에 APK를 설치할 수 있습니다.
- 보안 강화를 위해 앱 서명 키와 다른 새로운 업로드 키를 생성합니다.
- Google API를 사용하는 경우 앱용 Google Cloud 콘솔에 업로드 키와 앱 서명 키 인증서를 등록해야 할 수 있습니다.
- Android App Links를 사용하는 경우 웹사이트의 해당 디지털 애셋 링크 JSON 파일에 있는 키를 업데이트해야 합니다.
업로드 키를 분실했거나 도난당했나요?
비공개 업로드 키를 분실했거나 도난당했다면 새 키를 만들 수 있습니다. 그러면 개발자 계정 소유자가 Play Console에서 키 재설정을 시작할 수 있습니다.
Google 지원팀이 새 업로드 키를 등록하면 계정 소유자 및 전체 관리자는 자세한 내용이 담긴 메시지(메시지함으로 전송)와 이메일을 받게 됩니다. 이후 키 저장소를 업데이트하고 API 제공업체에 키를 등록할 수 있습니다.
계정 소유자는 Play Console에서 재설정 요청을 취소할 수도 있습니다.
중요: 업로드 키를 재설정해도 Google Play에서 APK를 사용자에게 전달하기 전에 다시 서명하는 데 사용하는 앱 서명 키는 영향을 받지 않습니다.
APK 서명 체계 v4
Android 11 이상을 실행하는 기기에서는 새로운 APK 서명 스킴 v4를 지원합니다. Play 앱 서명은 자격을 갖춘 앱에 v4 서명을 사용하여 최신 기기에서 사용 가능한 최적화된 배포 기능에 액세스할 수 있도록 합니다. 개발자가 별도로 취해야 할 조치는 없으며 v4 서명에서 사용자에게 미치는 영향도 없습니다.
관련 콘텐츠
- Play Console의 무결성 및 서명 서비스를 알아보세요.
- Android 개발자 사이트의 무결성 및 서명 서비스를 알아보세요.