Android 키 저장소 파일이란 무엇이며 어떤 용도로 사용됩니까?


128

이것은 일반적인 질문이지만 특히 Android 사용에 관심이 있습니다. 키 스토어 파일이란 무엇이며 어떤 용도로 사용됩니까?

여러 Android 애플리케이션이 동일한 키 저장소를 사용하여 애플리케이션에 서명 할 수 있습니까 (.apk에 "서명"하는 것이 정확히 무엇을 의미합니까?), 이것의 의미는 무엇입니까?


1
두 가지 주제를 혼동하는 것 같습니다. 첫 번째는 키 저장소이고 두 번째는 APK 서명입니다. 또한 Nikolay Elenkov의 Android 보안 내부 : Android 보안 아키텍처에 대한 심층적 인 안내서를 참조하십시오 .
jww

답변:


130

내가 제공하는 대답은 키 저장소 파일이 요청하는 사람에게 자신을 인증하는 것입니다. .apk 파일 서명에만 국한된 것이 아니라 개인 인증서, 전송할 서명 데이터 및 다양한 인증을 저장하는 데 사용할 수 있습니다.

apk로 서명 한 이후 Android에서 무엇을하고 무엇을 찾고 있는지에 관해서는 인증서입니다. 자격 증명을 사용하여 응용 프로그램을 브랜딩합니다. 동일한 키를 사용하여 여러 응용 프로그램을 브랜딩 할 수 있습니다. 실제로 하나의 인증서를 사용하여 작성하는 여러 응용 프로그램을 브랜딩하는 것이 좋습니다. 자신이 속한 응용 프로그램을 쉽게 추적 할 수 있습니다.

무슨 의미인지 잘 모르겠습니다. 인증서 소지자 외에는 아무도 응용 프로그램을 업데이트 할 수 없다는 것을 의미한다고 생각합니다. 즉, 응용 프로그램에 야생으로 릴리스하면 응용 프로그램에 서명하는 데 사용한 인증서를 잃어 버린 경우 업데이트를 릴리스 할 수 없으므로 해당 인증서를 안전하게 유지하고 필요한 경우 백업하십시오.

그러나 apk를 서명하여 와일드로 릴리스하는 것 외에도 원하는 경우 SSL을 통해 서버에서 장치를 인증 할 수 있습니다 (Android 관련).


2
아주 좋은 대답입니다. 또한 앱에서 "푸시 데이터"를 사용하려면 키 저장소 파일이 필요합니다.
KapteinMarshall

키 스토어 머신은 특정입니까? 또는 우리는 응용 프로그램을 업데이트하기 위해 모든 컴퓨터에서 사용할 수 있습니까 ??
Yawar

7
좋은 설명입니다. 왜 KeyStorePassword, Key alias, KeyPassword가 필요한지 설명 할 수 있습니까? 세 개의 키가 중복되는 것 같습니다.
ARK

18

Android 마켓에서는 공개 / 개인 키 메커니즘을 사용하여 인증서로 게시 한 모든 앱에 서명해야합니다 (인증서는 개인 키로 서명 됨). 이를 통해 무엇보다도 원격 공격자가 악의적 인 업데이트를 응용 프로그램에 시장에 내놓는 것을 방지 할 수있는 보안 계층을 제공합니다 (모든 업데이트는 동일한 키로 서명해야 함).

Android 개발자 사이트 의 앱 서명 안내서 에서 :

일반적으로 모든 개발자에게 권장되는 전략은 응용 프로그램의 예상 수명 동안 모든 응용 프로그램에 동일한 인증서로 서명하는 것입니다. 몇 가지 이유가 있습니다 ...

동일한 키를 사용하면 몇 가지 이점이 있습니다. 하나는 동일한 키로 서명 된 응용 프로그램간에 데이터를보다 쉽게 ​​공유 할 수 있다는 것입니다. 다른 하나는 동일한 키로 서명 된 여러 앱이 동일한 프로세스에서 실행되도록하여 개발자가 더 많은 "모듈 식"애플리케이션을 구축 할 수 있다는 것입니다.


10

서명 프로세스에 대한 자세한 내용은 공식 Android 설명서 ( http://developer.android.com/guide/publishing/app-signing.html)에서 확인할 수 있습니다.

예, 동일한 키 저장소로 여러 애플리케이션에 서명 할 수 있습니다. 그러나 한 가지 중요한 점을 기억해야합니다. Play 스토어에 앱을 게시하는 경우 디버그가 아닌 인증서로 서명해야합니다. 언젠가이 앱에 대한 업데이트를 게시하려는 경우 apk 서명에 사용 된 키 저장소가 동일해야합니다. 그렇지 않으면 업데이트를 게시 할 수 없습니다.


아니요, 잘못되었습니다. apk에 서명하는 데 사용하는 키 저장소는 다를 수 있지만 apk에 서명하는 데 사용하는 키는 동일해야합니다. 키 저장소 파일은 키 및 인증서 정보를 저장하는 데 사용 된 파일 일 뿐이며 동일한 키 저장소 파일에 여러 키 엔티티를 가질 수 있습니다.
zeleven

0

keytool의 전체 아이디어는 해당 APK의 출처를 나타내는 고유 식별자로 APK에 서명하는 것입니다. 키 스토어 파일 (내가 이해 한 것)은 디버깅에 사용되므로 apk에는 프로덕션 용 apk에 서명하지 않고 keytool의 기능이 있습니다. 따라서 디버깅 목적으로 단일 키 저장소로 여러 APK에 서명 할 수 있어야합니다. 그러나 프로덕션 환경으로 나아가면 생성하는 각 APK의 식별자로 고유 한 키 도구가 필요하다는 것을 이해하십시오.


에뮬레이터 또는 실제 장치에서 앱을 디버깅하기 위해 앱에 서명 할 필요는 없습니다.
Marcus

디버깅을 위해 서명해야한다는 의미는 아니지만 키 저장소를 키 도구의 테스트 구현으로 사용할 수 있습니다.
Adam Storm

나는 keytool당신이 무슨 뜻인지 생각하지 않습니다 . keytool은 키 저장소를 생성하는 데 사용되는 Java 프로그램입니다.
Otra

네 맞아요, keytool은 내가 의미하는 것이 아닙니다. 나는 '핵심'이 의미하는 것 같아요. 디버깅을 위해 공통 apk 키를 가질 수 있다고 asker에게 설명하려고했지만 게시 할 때 각 apk에는 편집 및 업그레이드를 위해 고유 키가 있어야합니다.
Adam Storm

그들은 고유 키가 필요하지 않습니다 ... 하나의 개인 키로 여러 개의 APK에 서명 할 수 있습니다. 실제로 그렇게하는 것이 좋습니다. 10 개의 앱에 대해 10 개의 서로 다른 인증서 / 키를 추적한다고 상상할 수 있습니까?
Otra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.