YD_S 개발로그
article thumbnail

● Android - Keystore 생성 및 앱 서명하기

 

1. Keystore 생성

  • keystore 파일명 지정 (디렉토리를 지정하여 생성할 수도 있다.)
  • alias명 지정
keytool -genkey -v -keystore ~/[Keystore 파일명].jks -keyalg RSA -keysize 2048 -validity 10000 -alias [alias명] -storetype JKS

 

질문에 답하기

  1. Enter Keystore password :  [생성할 키스토어 비밀번호]
  2. Re-enter new password : [생성할 키스토어 비밀번호 확인]
  3. Whit is your first and last name? : [생성자 성과 이름]
  4. What is the name of your organizational unit? : [생성자 부서명]
  5. What is the name of your organization? : [생성자 조직(회사)명]
  6. What is the name your City or Locality? : [생성자 도시명]
  7. What is the name of your State or Province? : [생성자 지역(나라) 이름]
  8. What is the two-letter country code for this unit? : [생성자의 국가 코드 ex)대한민국: 82]
  9. Generating 2,048 bit RSA key pair and self-signed certificate (SHA384withRSA) with a validity of 10,000 days for: CN=[생성자 성과 이름], OU=[성성자 부서명], O=[생성자 조직(회사)명], L=[생성자 도시명], ST=[생성자 지역(나라) 이름], C=[생성자의 국가 코드] : 1~7까지 입력한 내용을 확인시켜준다.
  10. Enter key password for <[alias명]> (RETURN if same as keystor password) : [alias 패스워드 (keystore 비밀번호와 같게 지정할 경우 엔터)]
  11. correct? : [입력 내용대로 최종 생성을 원할 경우 yes 혹은 y 입력]

▷ keystore와 alias 비밀번호를 서로 다르게 설정할 수 있다. 물론 다르게 설정하는 것이 보안 상 유리하다.

 

2. properties를 사용하여 keystore 참조하기

local.properties

 

○ android의 root 폴더 아래 local.properties 파일을 생성한다.

○ local.properties 파일에 아래 내용을 입력한다. 

STORE_FILE=[keystore 파일 경로]
STORE_PASSWORD=[keystore 패스워드]
KEY_ALIAS=[alias명]
KEY_PASSWORD=[alias 패스워드]

 gitignore에 local.properties 파일과 keystore 파일을 추가하는 것을 잊지말자.

 

 

3. 앱 서명 구성하기

  • app 수준의 build.gradle을 설정한다.
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

android {
     ......
     ......

    signingConfigs {
            release {
                storeFile file(localProperties.getProperty('STORE_FILE'))
                storePassword localProperties.getProperty('STORE_PASSWORD')
                keyAlias localProperties.getProperty('KEY_ALIAS')
                keyPassword localProperties.getProperty('KEY_PASSWORD')                        
            }
     }
     
     buildTypes {
        release {          
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
 }

 

 

▷ build.gradle 구성 후 release로 run 하거나 APK 혹은 App Bundle 추출 시 앱 서명이 되어있는 것을 확인할 수 있다.

profile

YD_S 개발로그

@YD_S

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!