동일한 키 저장소 파일을 사용하여 두 개의 다른 애플리케이션에 서명 할 수 있습니까?


89

새 응용 프로그램을 업로드해야하는데 약간 다른 디자인 일뿐입니다. 어제 애플리케이션에 서명하기 위해 키 저장소 파일을 생성했습니다. 같은 것을 사용할 수 있습니까?


5
예 (또한, 당신이 요청하기 전에 시도 했습니까?) 수
njzk2

답변:


96

keystore여러 응용 프로그램에 사용할 수 있습니다 .

새 키 저장소를 생성 할 필요가 없습니다.


6
그리고 '별칭'의 경우 무엇을 써야합니까?
Jacky 박사는

12
키 스토어는 CONTAINS 서명 인증서를 구성하는 공개 / 개인 키 쌍을. 하나의 키 저장소에는 여러 키 쌍이 포함될 수 있습니다. '별칭'은 키 저장소의 특정 키 쌍에 대한 참조입니다. 하나의 키 저장소는 모든 키 쌍을 저장할 수 있지만 앱당 하나의 키 쌍이 있어야합니다. 서명하는 앱의 이름을 별칭으로 사용합니다. 키 저장소와 그 안의 각 키 쌍에 대해 별도의 암호를 가질 수 있습니다. 이러한 비밀번호를 변경하고 키 저장소에서 키 쌍을 가져 오거나 내보내거나 키 저장소에 새 키 쌍을 추가 할 수 있습니다. 이 모든 작업은 'keytool'명령 줄 명령으로 수행됩니다. 찾아 봐.
brycewjohnson

@brycewjohnson GUI를 통해 새 쌍을 키 저장소에 추가 할 수 있습니까?
CinCout

43

지금까지 합의 된 답변에 대해 반론을 할 것입니다.

대부분의 앱 작성자는 앱간에 동일한 키 저장소 / 인증서 / 암호를 공유하는 것이 정상적으로 작동한다는 데 동의합니다. 중요한 것은 " 애플리케이션의 예상 수명 동안 동일한 인증서 를 사용하여" 앱이 자체적으로 업그레이드 할 수 있도록하는 것입니다.

그러나 별도의 앱 또는 앱 제품군에 대해 별도의 키 저장소를 보유해야하는 한 가지 좋은 이유를 생각할 수 있습니다. 다른 사람에게 앱을 판매하여 원본에 대한 업그레이드로 게시하기를 원할 경우,이를 위해 유일한 키 스토어와 비밀번호를 공유해야합니다. 아마도 큰 문제는 아니지만 약간의 걱정과 충분히 큰 구매자에 대한 실사 문제 일 것입니다.

또한 문서에서 @ol_v_er와 같은 방식으로 동일한 줄을 읽지 않습니다. 나는 현재 줄을 생각한다 :

애플리케이션의 예상 수명 동안 동일한 인증서로 모든 앱에 서명해야합니다.

(현재 버전에는 쉼표가 없음) 단순히 '평생'권장 사항이 모든 앱에 적용된다는 점을 강조하는 것이며 실제로 모든 앱에 동일한 인증서를 사용하도록 지시하는 것이 아닙니다.


6
각 앱에 대해 별도의 키 저장소를 유지하는 것이 좋습니다!
Sufian

42

공식 문서는 다음과 같이 알려줍니다.

일반적으로 모든 개발자에게 권장되는 전략은 애플리케이션의 예상 수명 동안 동일한 인증서로 모든 애플리케이션에 서명하는 것입니다. 그렇게해야하는 몇 가지 이유가 있습니다.

https://developer.android.com/studio/publish/app-signing.html#considerations

예, 동일한 인증서로 모든 응용 프로그램에 서명하십시오.


8
그리고 '별칭'의 경우 무엇을 써야합니까?
Jacky 박사는

6
간단하게하려면 모든 앱에 동일하게 사용하세요.
ol_v_er 2005

18

이 질문과 제공된 답변으로 인해 혼란이 발생하기 때문에 여기에 몇 가지 설명을 추가하고 싶습니다. 키 저장소가 실제로 무엇인지 이해하는 것이 중요합니다.

키 저장소는 Android APK에 서명하는 데 사용되는 공개 / 개인 키 쌍을 안전하게 저장하는 수단 일뿐입니다. 예, 동일한 키 저장소 를 사용하여 문제없이 여러 APK에 서명 할 수 있습니다 . 동일한 별칭 (각 별칭은 인증서 임)을 사용하여 여러 APK에 서명 할 수도 있으며 작동합니다. 그러나 보안과 관련이 있습니다. 단일 별칭이 손상되면 모든 앱이 손상됩니다.

그러나 언젠가 앱에 대한 권한을 판매하려는 경우 모든 앱에 동일한 별칭을 사용하는 것은 좋은 생각이 아닐 수 있습니다. 그러나 각 apk에 대해 다른 별칭을 사용하는 경우 동일한 키 저장소를 사용하는 것이 반드시 잘못된 옵션은 아닙니다. 한 키 저장소에서 다른 키 저장소로 인증서를 이동할 수있는 방법이 있으므로 해당 인증서에만 필요한 키를 구매자에게 안전하게 제공 할 수 있습니다.

명확하게 말하면, 키 저장소는 키 저장 매체입니다. APK에 서명하는 과정에서 실제 역할을하지 않지만 실제로 APK에 서명하는 데 사용되는 키를 저장하는 역할 만합니다.

참조 :

키 저장소, 인증서 및 별명 이해

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


1
여러 질문에 동일한 답변을 게시하지 마십시오. 좋은 답변 하나를 게시 한 다음 투표 / 플래그하여 다른 질문을 중복으로 종료합니다. 질문이 중복되지 않는 경우 질문에 대한 답변을 조정하십시오.
Paul Roub

사과. 나는 너무 멍청하다.
Anthony Stivers

1
중복에 투표 할 충분한 담당자가 없습니다. 따라서 다음 질문을 중복으로 투표하고 싶다면이 질문이 중복되지 않는 것이 가장 적절하다고 생각합니다. 관련 키워드에 대한 Google의 첫 번째 순위이며 가장 관련성이 높은 답변을 제공합니다. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers

기다림! 동일한 키 저장소를 각 앱에 대해 다른 별칭으로 사용하려면 어떻게해야합니까?!
Ziad H.

5

물론이야! 동일한 키 저장소 파일을 원하는만큼 사용할 수 있습니다. 개발하는 모든 애플리케이션에 대해 항상 동일한 키 저장소 파일을 사용하는 것이 좋습니다. 응용 프로그램을 업데이트하거나 수정하려는 경우 도움이됩니다. 이때 동일한 키로 애플리케이션에 서명해야합니다.


2

동일한 인증서 (키 저장소)를 사용하여 모든 앱에 서명합니다. 내 마음이 바뀌고 내 앱이 데이터를 공유하도록하려는 경우 이점이 있습니다.

아시다시피 Android는 UID로 각 앱을 식별합니다. 모든 앱이 동일한 인증서로 서명 된 경우 Android에 동일한 사용자 ID를 두 개 이상의 앱에 할당하도록 요청하고 차례로 단일 프로세스에서 실행하고 데이터를 공유하도록 할 수 있습니다.

안드로이드 문서에서 android : sharedUserId

android : sharedUserId

다른 애플리케이션과 공유 할 Linux 사용자 ID의 이름입니다. 기본적으로 Android는 각 애플리케이션에 고유 한 사용자 ID를 할당합니다. 그러나이 속성이 둘 이상의 응용 프로그램에 대해 동일한 값으로 설정되면 동일한 인증서로 서명 된 경우 모두 동일한 ID를 공유합니다. 동일한 사용자 ID를 가진 애플리케이션은 서로의 데이터에 액세스 할 수 있으며 원하는 경우 동일한 프로세스에서 실행할 수 있습니다.


1

최근 업데이트

Google 앱 서명에 등록 하려면 새로운 다른 키를 사용하여 apk 또는 번들에 서명해야합니다. 그렇지 않으면 Google 콘솔을 업로드 한 후 다음과 같은 오류 메시지가 표시됩니다.

사용자에게 제공되는 APK에 서명하는데도 사용되는 키로 서명 된 APK 또는 Android App Bundle을 업로드했습니다. Google Play 앱 서명에 등록되어 있으므로 업로드하기 전에 새 키로 APK 또는 Android App Bundle에 서명해야합니다.


android studio apk 서명 화면에서 새 키를 생성 할 수있었습니다. 새 키 저장소 및 별칭을 생성하면 작동 할 수 있습니다. 그것은 나를 위해 일했습니다.
Numan Karaaslan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.