create-keystore
SKILL.md
Android Keystore Creation Skill
Android 앱 서명을 위한 Keystore 파일을 생성하고 관리하는 스킬입니다.
Keystore 생성
기본 생성 명령어
keytool -genkey -v \
-keystore <keystore_name>.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias <alias_name>
입력 항목
| 항목 | 설명 | 예시 |
|---|---|---|
| keystore password | Keystore 비밀번호 | 최소 6자 이상 |
| key password | 개별 키 비밀번호 | Keystore와 동일 가능 |
| CN (Common Name) | 이름 | Hong Gildong |
| OU (Organizational Unit) | 부서 | Development |
| O (Organization) | 조직/회사 | MyCompany |
| L (Locality) | 도시 | Seoul |
| ST (State) | 시/도 | Seoul |
| C (Country) | 국가 코드 (2자리) | KR |
비대화식 생성 (자동화용)
keytool -genkey -v \
-keystore release-key.jks \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-alias my-key-alias \
-dname "CN=Hong Gildong, OU=Development, O=MyCompany, L=Seoul, ST=Seoul, C=KR" \
-storepass <password> \
-keypass <password>
Gradle 설정
방법 1: gradle.properties (권장)
# ~/.gradle/gradle.properties 또는 프로젝트 gradle.properties
RELEASE_STORE_FILE=../keystore/release-key.jks
RELEASE_STORE_PASSWORD=your_store_password
RELEASE_KEY_ALIAS=my-key-alias
RELEASE_KEY_PASSWORD=your_key_password
방법 2: build.gradle.kts 설정
android {
signingConfigs {
create("release") {
storeFile = file(project.property("RELEASE_STORE_FILE") as String)
storePassword = project.property("RELEASE_STORE_PASSWORD") as String
keyAlias = project.property("RELEASE_KEY_ALIAS") as String
keyPassword = project.property("RELEASE_KEY_PASSWORD") as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
방법 3: build.gradle (Groovy)
android {
signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
Keystore 관리
Keystore 정보 확인
keytool -list -v -keystore <keystore_name>.jks
인증서 지문(Fingerprint) 확인
# SHA-1 (Google Play 등록용)
keytool -list -v -keystore <keystore_name>.jks | grep SHA1
# SHA-256
keytool -list -v -keystore <keystore_name>.jks | grep SHA256
비밀번호 변경
# Keystore 비밀번호 변경
keytool -storepasswd -keystore <keystore_name>.jks
# Key 비밀번호 변경
keytool -keypasswd -alias <alias_name> -keystore <keystore_name>.jks
Alias 변경
keytool -changealias -keystore <keystore_name>.jks \
-alias <old_alias> \
-destalias <new_alias>
Play App Signing 업로드 키
Google Play Console의 Play App Signing을 사용하는 경우:
PEM 파일로 인증서 내보내기
keytool -export -rfc \
-keystore upload-key.jks \
-alias upload-key \
-file upload-certificate.pem
보안 권장사항
Keystore 보관
- Keystore 파일을 Git에 커밋하지 않기 (
.gitignore에 추가) - 비밀번호를 코드에 직접 작성하지 않기
- 안전한 장소에 백업 보관 (분실 시 앱 업데이트 불가)
- CI/CD에서는 환경변수 또는 Secret Manager 사용
.gitignore 추가
# Keystore
*.jks
*.keystore
keystore.properties
환경변수 사용 (CI/CD)
android {
signingConfigs {
create("release") {
storeFile = file(System.getenv("KEYSTORE_PATH") ?: "../keystore/release.jks")
storePassword = System.getenv("KEYSTORE_PASSWORD") ?: ""
keyAlias = System.getenv("KEY_ALIAS") ?: ""
keyPassword = System.getenv("KEY_PASSWORD") ?: ""
}
}
}
문제 해결
| 에러 | 원인 | 해결 |
|---|---|---|
| keytool: command not found | JDK 미설치 또는 PATH 미설정 | JDK 설치 후 PATH 설정 |
| keystore password was incorrect | 비밀번호 오류 | 올바른 비밀번호 입력 |
| alias does not exist | 잘못된 alias | keytool -list로 확인 |
사용 예시
사용자가 다음과 같이 요청하면 이 스킬을 활용합니다:
- "keystore 만들어줘"
- "앱 서명 키 생성해줘"
- "릴리즈 키 만들어줘"
- "키스토어 생성해줘"
- "Play Store 업로드 키 만들어줘"
Weekly Installs
2
Repository
ingpdw/pdw-andr…dev-toolFirst Seen
Feb 7, 2026
Security Audits
Installed on
mcpjam2
openhands2
replit2
junie2
windsurf2
zencoder2