Android용 코드 기호

이 문서에서는 Android(APK)용 코드 서명 방법을 알아봅니다. 래핑 프로젝트를 만들고 빌드할 때 플랫폼 중 하나로 Android를 선택했다면 Android용 앱에 서명해야 합니다.

중요

대신 Google Play 배포용 AAB 앱에 서명하려면 앱 서명을 참조하세요.

PC 준비

시작하려면 다음 정보를 제공해야 합니다.

키 생성

참고

앱 등록을 생성하는 동안 이미 키와 서명 해시를 생성했다면 APK 패키지 서명으로 건너뛰세요.

keytool.exe("Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe" 폴더 위치에서 Android Studio 설치 후 사용 가능)를 사용하여 애플리케이션 패키지에 서명하기 위한 인증서를 만듭니다. Keytool은 암호화 키, X.509 인증서 체인 및 신뢰할 수 있는 인증서의 키 저장소(데이터베이스)를 관리하는 데 사용됩니다.

키를 생성하려면 명령 프롬프트를 열고 다음 명령을 실행합니다.

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

매개 변수:

  • genkey - 키를 생성하는 명령.
  • alias - 생성될 키가 포함된 키 저장소 항목을 참조하기 위해 앞으로 사용할 별칭을 지정합니다.
  • keyalg - 키 알고리즘 이름.
  • keystore - 사용하는 키 저장소의 이름.
  • keysize - 생성될 각 키의 크기.
  • validity - 키의 유효 기간(일).

예:

  • Key Vault를 준비하는 경우 PATH_TO_KEYSTORE에는 .pfx 확장자가 있어야 합니다.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • 수동 서명을 준비하는 경우 PATH_TO_KEYSTORE에 .jks 확장자가 있어야 합니다.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

위의 예의 매개 변수를 사용하는 keytool 명령 스크린샷.

서명 해시 생성

참고

앱 등록을 생성하는 동안 이미 키와 서명 해시를 생성했다면 APK 패키지 서명으로 건너뛰세요.

키를 생성한 후 keytoolexportcert 명령을 사용하여 키 저장소 인증서를 내보냅니다.

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

매개 변수:

  • exportcert - 키 저장소에서 별칭과 연결된 인증서를 읽고 cert_file 파일에 저장합니다. 파일을 지정하지 않으면 stdout으로 인증서가 출력됩니다.
  • alias - 앞서 키를 생성할 때 사용되는 별칭.
  • keystore - 사용하는 키 저장소의 이름.
  • openssl - Android용 SHA1 키를 생성합니다.

앱을 등록하는 동안 생성된 서명 해시를 리디렉션 URI에 추가합니다.

SHA1 16진수를 Base64로 인코딩된 서명 해시로 수동으로 변환

서명 해시가 올바르게 인코딩되지 않았거나 Azure Portal에서 허용되지 않는 경우 다음 오류가 표시될 수 있습니다.

"서명 해시는 base64로 인코딩된 SHA1이어야 합니다."

이 오류가 나타나면 대신 다음 단계를 사용하여 서명 해시를 생성해 보세요.

  1. keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE를 실행하여 상세 모드에서 인증서 정보를 나열합니다.
  2. 출력에서 인증서 지문 섹션 아래의 SHA1 값을 복사합니다. 16진수 값만 복사해야 합니다.
    예: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. 사용 가능한 "16진수를 Base64로" 변환기를 사용하여 복사된 인증서 지문 16진수 값을 Base64 인코딩 값으로 변환합니다.
    Base64 인코딩 값의 예: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. 앱을 등록하는 동안 생성된 Base64 인코딩 값을 Azure Portal에서 서명 해시로 복사합니다.

APK 패키지 서명

APK 패키지에 서명하기 위해 apksigner 도구를 사용합니다. 이 도구를 사용하면 APK에 서명하고 APK가 지원되는 모든 Android 플랫폼에서 APK 패키지 서명이 정상적으로 검증되는지 확인할 수 있습니다.

apksigner 찾기

  1. Android Studio에서 Android SDK 경로를 확인합니다.

  2. 도구 > SDK 관리자 > Android SDK 위치를 선택합니다.

    iOS를 사용하는 경우 buildTools Version 디렉터리에서 apksigner 파일을 확인합니다.

    SDK 디렉토리 > 빌드 도구 > buildToolsVersion > 라이브러리로 이동하고 apksigner.jar 파일을 선택합니다.

apksigner 파일 사용

apksigner를 사용하여 다음 명령을 실행해서 패키지에 서명합니다.

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

매개 변수:

  • ks - 키 저장소에 대한 경로.
  • ks-key-alias - APK 파일의 키 별칭 경로.

메시지가 표시되면 암호를 입력합니다.

추가 정보: Android Studio 명령줄 도구: apksigner

앱 배포

App Center와 같은 배포 서비스에서 패키지를 호스트할 수 있습니다. Microsoft Intune을 사용하여 배포하려면 Microsoft Intune에 Android 기간 업무 앱 추가를 참조하세요. 앱에 Intune 앱 보호 서비스에 대한 액세스 권한을 부여하는 방법에 대해 알아보려면 앱에 Intune 앱 보호 서비스에 대한 액세스 권한 부여를 참조하십시오.

참조 항목