Android - 앱에 디지털 서명 추가하기 (with Flutter)

반응형

 

디지털 서명 파일 생성하는 방법은 아래의 포스팅에서 자세히 확인 가능합니다.

2023.05.22 - [DevOps/그 외] - 디지털 서명 - 개념, 절차, 생성 방법 (디지털 서명 파일(keystore) 만들기)


디지털 서명 키 파일 생성하기

  • 프로젝트 안드로이드 폴더 내 우클릭 - New File
  • key.properties 이름의 파일 생성

 

  • 생성한 파일에 아래의 코드 추가
storePassword = key.jks 만들 때 입력한 비밀번호 (keystore password)
keyPassword = key.jks 만들 때 입력한 비밀번호 (keystore password)
keyAlias=key
storeFile=key.jks 파일 위치
## USER_NAME은 OS에서 로그인한 사용자의 이름
# MacOS: /Users/USER_NAME/key.jks
# Windows: C:/Users/USER_NAME/key.jks


공유 금지 설정하기

키 파일은 절대 공개되어서는 안되는 파일이므로, 혹시나 공유 시 해당 파일을 업로드가 되지 않아야 합니다.

깃허브 같은 곳에 public 으로 올릴 경우를 대비하여 .gitignore 파일에 키 파일이 업로드 되지 않도록 설정해줍니다.

 

  • 프로젝트 폴더 내에 .gitignore 파일 열기
  • 가장 아래에 'key.properties' 입력 후 저장(컨트롤+S) 

 

  • 깃 데스크톱으로 커밋 목록을 확인하면 추가한 키 파일을 업로드 하지 않는 것을 볼 수 있습니다.


앱에 디지털 서명 포함하기 (build.gradle)

android - app - build.gradle 파일 열기

  • 서명 확인절차
    1. 앱 실행 시 디버그 모드가 아닌 배포(release)의 형태를 가질 경우 디지털 서명 확인
    2. key.properties 파일의 정보를 객체화 하여 호출 (keystoreProperties)
    3. 서명 설정(signingConfigs)에서 키 파일의 정보 확인 (디지털 서명 정보가 맞는지)

 

  • 디지털 서명 키 파일 확인 코드
    • 빈 곳에 아래의 코드 붙여 넣기
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

 

  • 앱 배포시 앱 ID 중복 방지
    • 'applicationId' 수정
    • android - defaultConfig 하위에 속해있는 applicationId 의 내용 수정
    • 이는 앱 배포 시 다른 앱과의 중복을 막기 위해 편의상 개발자 계정 이름 입력하는 것
android {
	// .. 코드 생략 ..
    defaultConfig {
        // applicationId "com.example.flutter_memo_app"
        applicationId "com.beautystar0413.flutter_memo_app"
    }
    // .. 코드 생략 ..
}

 

  • 디지털 서명 설정 코드 추가
    • android 하위에 코드 추가
    • key.properties에서 정의한 각각의 속성 값을 소프트 코딩으로 민감 정보 대체 입력
android {
	signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
}

 

  • 릴리즈 빌드에 대한 자체 서명 구성 추가
    • android - buildType 하위에 속해 있는 sigingConfig 의 내용 수정
    • 디버그에서 릴리즈로 변경
android {
    buildTypes {
        release {
            // signingConfig signingConfigs.debug
            signingConfig signingConfigs.release
        }
    }
}

 

  • 저장(컨트롤+S)

디지털 서명 확인

  • 릴리즈 모드로 앱 실행
    • 앱이 릴리즈모드로 실행될 때 위에서 진행한 디지털 서명을 확인
    • 만약 디지털 서명 정보가 다르다면 에러 출력
flutter run --release

 

  • 정상적인 디지털 서명 키 파일일 경우

 

  • 디지털 서명 키 파일의 비밀번호를 임으로 변경하여 고의적으로 서명을 다르게 할 경우
  • Error) keystore password was incorrect (키 파일의 비밀번호가 올바르지 않음)


참고

반응형