
앱 업데이트를 하려고 오랜만에 안드로이드 스튜디오를 켰는데, 빌드 마지막 단계에서 막혀버린 경험이 있으십니까? 키스토어 패스워드를 입력하라는 창이 떴는데, 도무지 기억이 나지 않을 때의 그 막막함은 겪어본 사람만 압니다.
특히 1년에 한두 번 업데이트하는 개인 개발자라면 더욱 그렇습니다. 노트북을 한 번 바꾸고, 메모장을 정리하다 보면 어느 순간 그 중요한 비밀번호가 사라져 있습니다.
키스토어 패스워드는 왜 복구가 불가능할까요
먼저 냉정한 사실부터 말씀드리겠습니다. 안드로이드 키스토어(.jks 또는 .keystore 파일)의 패스워드는 공식적인 복구 수단이 존재하지 않습니다. 구글도, 안드로이드 스튜디오도 이 비밀번호를 어디에도 저장하지 않습니다. PBKDF2라는 강력한 키 유도 함수로 암호화되어 있어, 비밀번호 없이는 키스토어 안의 개인키를 꺼낼 수 없습니다.
이것은 보안상 의도된 설계입니다. 만약 복구 경로가 있다면, 그것이 곧 해커의 침입 경로가 되기 때문입니다.
그래도 먼저 확인해 볼 곳들
포기하기 전에 다음 위치들을 차근차근 확인해 보시기 바랍니다.
첫째, build.gradle 파일입니다. 많은 개발자가 편의를 위해 signingConfigs 블록 안에 패스워드를 평문으로 적어둡니다. 프로젝트 폴더의 app/build.gradle 또는 build.gradle.kts 파일을 열어보십시오.
둘째, gradle.properties 파일입니다. ~/.gradle/gradle.properties 또는 프로젝트 루트의 동일 파일에 KEYSTORE_PASSWORD= 형태로 저장되어 있을 수 있습니다.
셋째, 운영체제의 키체인입니다. macOS 사용자라면 키체인 접근 앱에서 "android" 또는 "keystore"로 검색해 보십시오. Windows라면 자격 증명 관리자를 확인하시면 됩니다.
넷째, 1Password나 비트워든 같은 패스워드 매니저입니다. 의외로 과거의 자신이 꼼꼼하게 저장해 두었을 가능성이 있습니다.
그래도 못 찾았다면, 진짜 해법
여기까지 시도해도 패스워드를 찾지 못했다면, 이제 두 가지 시나리오로 갈립니다.
시나리오 1: Play App Signing을 사용 중인 경우
2020년 이후 구글 플레이에 출시된 대부분의 앱은 Play App Signing이 적용되어 있습니다. 이 경우 구글이 실제 서명 키를 관리하고, 개발자는 "업로드 키"만 가지고 있는 구조입니다. 즉 업로드 키를 잃어버려도 앱 자체는 살아 있습니다.
해결 절차는 다음과 같습니다. 새 키스토어를 생성한 뒤, 구글 플레이 콘솔에 접속하여 설정 → 앱 무결성 → 앱 서명으로 이동합니다. 거기서 "업로드 키 재설정 요청"을 진행하면 됩니다. 보통 영업일 기준 1~2일 안에 처리됩니다.
시나리오 2: Play App Signing을 사용하지 않는 경우
2017년 이전에 출시된 일부 레거시 앱이 여기에 해당합니다. 안타깝게도 이 경우는 기존 앱의 업데이트가 사실상 불가능합니다. 새로운 패키지명으로 별도 앱을 다시 출시하고, 기존 사용자에게 마이그레이션을 안내해야 합니다.
다시는 이런 일이 없도록 - 자산 관리의 기본
이번 일을 계기로 개발 자산 관리 체계를 점검해 보시는 것을 권해 드립니다. 키스토어 파일과 패스워드는 소스 코드보다 중요한 자산입니다. 소스 코드는 다시 짤 수 있어도, 키스토어를 잃으면 앱의 정체성이 사라지기 때문입니다.
요즘은 이런 민감 정보를 안전하게 관리해 주는 패스워드 매니저들이 잘 나와 있습니다. 1Password나 비트워든 같은 도구는 키스토어 파일 자체를 첨부해 두는 기능도 있더라고요. 무료 플랜으로도 충분히 사용해 볼 수 있으니, 오늘 이 기회에 한 번 도입해 보시는 것은 어떨까요.
소소한 습관 하나가 몇 년간의 개발 노력을 지켜준다는 점을 생각하면, 결코 과한 투자는 아닙니다.
마지막으로
키스토어 패스워드 분실은 누구에게나 일어날 수 있는 일입니다. 중요한 것은 당황하지 않고 위에서 안내드린 순서대로 하나씩 확인해 보시는 것입니다. Play App Signing이 적용된 앱이라면 충분히 살릴 수 있으니, 너무 절망하지 마시기 바랍니다.
그리고 오늘부터는 키스토어 백업과 패스워드 관리, 꼭 함께 챙겨두십시오.