안드로이드 keystore생성
아래와 같은 오류 발생시 해결방법
Keystore was tampered with, or password was incorrect
KeyStore를 이용하여 App을 개발하였을 경우, 마켓에 올리기 위해 release 버전으로 올려야만 다운로드시 정상적으로 App이 작동한다.
이 부분은 애뮬레이터에서는 이와 상관없이 작동되므로 간과하고 넘어갈 수 있음을 잊지 말아야 한다.
그 일례로 구글맵을 이용하여 ApiKey값을 디버그용으로 발급받은 키일 경우
마켓에서 올린뒤 다운로드 받은뒤 실행하면 지도가 정상적으로 뜨지 않는 현상이 발생한다.
이처럼 키값을 이용하여 배포할 경우 개발 외적으로 신경을 써줘야 하는 부분이 있음을 명심하여야 할 것이다.
그럼 이제부터 Release용 키를 생성하는 방법을 간단히 소개하겠습니다.
이유인즉 자신이 인증하는 애플리케이션임을 서명을 통해서 알리기 위함이다.
그러기 위해서는 개인 키를 포함하는 암호화된 서명 파일이 있는 keystore가 필요하고
이를 JDK에서 제공하는 jarsigner 로 공개키로 서명하게 된다.
아래 모든 일련의 작업들은 cmd창을 이용하여 진행하시면 됩니다.
1. JDK의 keytool을 이용하여 배포용 key(androes)를 생성한다.
keystore 암호를 입력하십시오:
이름과 성을 입력하십시오.
[Unknown]: Androes
조직 단위 이름을 입력하십시오.
[Unknown]:
조직 이름을 입력하십시오.
[Unknown]:
구/군/시 이름을 입력하십시오?
[Unknown]:
시/도 이름을 입력하십시오.
[Unknown]: Seoul
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: KR
CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR이(가) 맞습니
까?
[아니오]: y
다음에 대해 유효 기간이 10,000일인 1,024비트 RSA 키 쌍 및 자체 서명된 인증서(SHA1withRSA) 생성 중
: CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR
< androes>에 대한 키 암호를 입력하십시오.
(keystore 암호와 같은 경우 Enter를 누르십시오):
[debug.keystore 저장 중]
2. 구글맵을 이용하여 배포하고자 할 경우 릴리즈용 apikey를 발급 받아야 한다.
개발 시에는 debug.keystore로 발급 받은 apikey를 사용하지만,
배포시에는 Release용으로 발급 받은 keystore의 apikey를 사용해야만 다운로드 정상적으로 해당 서비스를 이용할 수 있다.
keystore 암호(기본값): android (개인적으로 변경하지 않았을시)
keystore 암호를 입력하십시오:
Keystore 유형: JKS
Keystore 공급자: SUN
Keystore에는 2 항목이 포함되어 있습니다.
별칭 이름: androes
작성일: keyStore.getCreationDate(alias)
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR
발급자: CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR
일련 번호: 4cc0078a
유효 기간 시작: Thu Oct 21 18:27:38 KST 2010 끝: Mon Mar 08 18:27:38 KST 2038
인증 지문:
MD5: xx:0F:B7:DF:BD:CE:E1:xx:xx:xx:xx:57:D1:C7:C3:xx
SHA1: xx:1A:9C:AD:B1:CA:xx:xx:xx:xx:1F:B7:5B:AF:23:9C:12:64:BB:xx
서명 알고리즘 이름: SHA1withRSA
버전: 3
*******************************************
*******************************************
별칭 이름: androiddebugkey
작성일: keyStore.getCreationDate(alias)
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Android Debug, O=Android, C=US
발급자: CN=Android Debug, O=Android, C=US
일련 번호: 4cbff3cb
유효 기간 시작: Thu Oct 21 17:03:23 KST 2010 끝: Fri Oct 21 17:03:23 KST 2011
인증 지문:
MD5: xx:3D:50:5A:54:2C:xx:xx:xx:35:5C:2A:4A:59:E4:xx
SHA1: xx:76:A6:xx:05:1F:xx:xx:xx:F8:77:xx:A5:E4:88:xx:D7:30:04:xx
서명 알고리즘 이름: SHA1withRSA
버전: 3
*******************************************
*******************************************
※ 디버그 서명 인증서는 생성후 365일간 유효하다
3. androes & androiddebugkey 두개의 인증서중 androes 인증지문의 MD5에 해당하는 값을 복사한다.
MD5값) xx:0F:B7:DF:BD:CE:E1:xx:xx:xx:xx:57:D1:C7:C3:xx
4. http://code.google.com/intl/ko/android/maps-api-signup.html 으로 이동
동의항목에 체크한 뒤 My certificate's MD5 fingerprint 입력란에 위의 값을 붙여넣기한뒤 [Generate API Key] 를 클릭하면
아래와 같은 결과 화면을 확인할 수 있다.
안드로이드 지도 API 키에 가입해주셔서 감사합니다.
사용자 키:
0MLF44dA70xxxxxxxxxxxxxxxxxxw9mhXUaYwKQ
이 키는
xx:0F:B7:DF:BD:CE:E1:xx:xx:xx:xx:57:D1:C7:C3:xx
지문이 등록된 사용자 인증서가 있는 모든 응용프로그램에서 사용할 수 있습니다.
다음은 지도 기능의 사용법을 설명해 주는 xml 형태의 예제입니다.
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0MLF44dA70xxxxxxxxxxxxxxxxxxw9mhXUaYwKQ"
/>
자세한 정보는 API 가이드를 참조하세요.
5. 위 결과화면중 사용자 키(Map API)라고 명시된 부분의 키를 복사해서 Map activity의 레이아웃 파일에 apiKey의 값으로 입력한다.
<com.google.android.maps.MapView android:id="@+id/mapmain" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0MLF44dA70xxxxxxxxxxxxxxxxxxw9mhXUaYwKQ"/>
etc.
> C:\.android\keytool -list -v -alias androiddebugkey -keystore debug.keystore [Enter]
keystore 암호를 입력하십시오:
별칭 이름: androiddebugkey
작성일: keyStore.getCreationDate(alias)
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Android Debug, O=Android, C=US
발급자: CN=Android Debug, O=Android, C=US
일련 번호: 4cbff3cb
유효 기간 시작: Thu Oct 21 17:03:23 KST 2010 끝: Fri Oct 21 17:03:23 KST 2011
인증 지문:
MD5: xx:0F:B7:DF:BD:CE:E1:xx:xx:xx:xx:57:D1:C7:C3:xx
SHA1: xx:1A:9C:AD:B1:CA:xx:xx:xx:xx:1F:B7:5B:AF:23:9C:12:64:BB:xx
서명 알고리즘 이름: SHA1withRSA
버전: 3
Release 키의 핑거 프린트 Display
> C:\.android\keytool -list -v -alias androes -keystore debug.keystore [Enter]
keystore 암호를 입력하십시오:
별칭 이름: androes
작성일: keyStore.getCreationDate(alias)
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR
발급자: CN=Androes, OU=Unknown, O=Unknown, L=Unknown, ST=Seoul, C=KR
일련 번호: 4cc0078a
유효 기간 시작: Thu Oct 21 18:27:38 KST 2010 끝: Mon Mar 08 18:27:38 KST 2038
인증 지문:
MD5: xx:0F:B7:DF:BD:CE:E1:xx:xx:xx:xx:57:D1:C7:C3:xx
SHA1: xx:1A:9C:AD:B1:CA:xx:xx:xx:xx:1F:B7:5B:AF:23:9C:12:64:BB:xx
서명 알고리즘 이름: SHA1withRSA
버전: 3
2010/10/22 - [Andro. Dev] - 안드로이드 App 서명 방법
2010/10/22 - [Andro. Dev] - 안드로이드 App Release 방법 (배포용 KEYSTORE 생성 및 SIGN)
2010/09/01 - [Andro. Dev] - 안드로이드 Map ApiKey 발급하는 방법
2010/08/06 - [Andro. Dev] - APK(Android Application)의 생성과 배포
http://jameroid.tistory.com/entry/%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%84%9C%EB%AA%85%ED%95%98%EA%B8%B0
http://roter.pe.kr/125
http://cafe.naver.com/junes81.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=3280 [안드로이드 애플리케이션 전자 서명]
http://www.androidpub.com/4742
http://sunbeatz.blog.me/140115615807
http://blog.naver.com/maramica?Redirect=Log&logNo=70088859724
keystore 만들기
http://mosei.tistory.com/entry/keystore-%EB%A7%8C%EB%93%A4%EA%B8%B0
안드로이드 앱을 앱스토어에 등록하려면 keystore 파일이 필요하다.
이 키스토어 파일은 인증서인데, IOS로 치자면 Production Certificate 와 같은거라고 보면 된다.
파일 생성하는 방법은 아주 간단하다.
순서를 알아보자.
1. 실행->cmd
2. key는 두가지 종류가 있다. 아래 설명을 보고 상황에 맞게 생성해서 사용하면 된다.
.keystore 와 .p12 파일 두가지로 생성 가능하다.
.keystore는 일반적으로 네이티브앱으로 개발했을때 앱스토어 등록시 사용하게 되고,
.p12 파일은 솔루션을 사용해서 빌드할때 사용된다. 대표적으로 Adobe DPS App Builder를 사용해서 앱을 빌드할 때 사용함.
keytool -genkey -alias hi -keyalg RSA -validity 10000 -keystore hi.keystore <-- .keystore 생성
keytool -genkey -alias hi -keyalg RSA -keysize 2048 -storetype pkcs12 -v -validity 10000 -keystore hi.p12 <-- .p12 생성
추가설명 :
-alias 키 이름
-validity 유효기간 (3650이 10년인데 3650으로 등록하면, 기간이 너무 짧다고 나온다. 그래서 넉넉하게 10000 권장)
-keystore 키스토어 파일이름
3. 순서(2)번의 명령어를 입력하면 몇가지를 물어본다. 위 그림처럼 간단하게 작성하면 된다.
비밀번호를 짧게 입력하면 위에서처럼 6자 이상 입력하라는 메시지가 출력된다.
이 비밀번호는 앱 등록시에 필요하므로 잊어버리면 안된다.
4. 위 그림에서는 keytool 을 C:\ 위치에서 실행했으므로 C:\ 디렉토리에 keystore 파일이 생성되어 있을것이다.
5. 앱스토어 등록시에 해당 keystore 파일과 비밀번호를 이용해 등록
http://lesstif.com/pages/viewpage.action?pageId=20775436