[Andorid] Google Play 앱 서명 PEPK 도구

love&peace·2025년 4월 3일

Android Native

목록 보기
2/2

회사에서 예전에 출시되었던 앱을 리뉴얼하거나 다시 출시하는 경우가 있다.
그런데 과거에 직접 keystore로 서명하여 배포했던 앱은
Google Play App Signing을 사용하기 위해 기존 서명 키를 Google에 업로드해야 한다.

이 과정에서 Google은 보안을 위해 암호화된 키만 업로드할 수 있도록 하고 있으며,
이를 위해 pepk.jar이라는 전용 도구를 사용하게 된다.
※ 신규 앱은 해당 작업 필요 없습니다.


keystore 구조

keystore 폴더 안에 다음과 같은 파일을 위치시켜줍니다:

  • 📦 pepk.jar – Google에서 제공하는 개인키 추출 & 암호화 툴
  • 🔐 keystore.jks – 예전에 앱 배포에 사용했던 서명 키
  • 📄 encryption_public_key.pem – Google에서 제공한 공개키

🔧 실행 명령어

java -jar pepk.jar --keystore=keystore.jks --alias=key0 --output=encrypted_private_key.pem --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem

⚠️ 자바 버전 오류

Error: Unable to export or encrypt the private key
java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/OAEPWithSHA1AndMGF1Padding
        at java.base/javax.crypto.Cipher.getInstance(Cipher.java:573)
        ...
      ```

저는 23버전을 사용중이여서
pepk.jar는 내부적으로 RSA/NONE/OAEPWithSHA1AndMGF1Padding이라는 암호화 알고리즘을 사용하는데 Java 17 이후부터 이 알고리즘은 보안상 이유로 deprecated 처리되었서 오류가 나옵니다.

해결 방법 – Zulu OpenJDK 11 사용

👉 Zulu OpenJDK 11 다운로드

설치한 후, Java 11을 직접 지정해 아래와 같이 실행합니다

& "C:\Program Files\Zulu\zulu-11\bin\java.exe" -jar pepk.jar --keystore=keystore.jks --alias=key0 --output=encrypted_private_key.pem --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem

0개의 댓글