使用 Play 應用程式簽署功能有什麼好處?除了防止金鑰永久遺失或遭盜用外,註冊使用 Play 應用程式簽署功能後,還能為 Android App Bundle (.aab) 啟用強化功能。由 Google 簽署系統根據應用程式套件產生的最佳化發行 APK,就能使用自動防護和 Gemini 模型自動翻譯字串等實用服務。遊戲可以存取其他自動服務,例如 Play Games Sidekick、邊玩邊下載,以及免費試玩付費遊戲。
要設定 Play 應用程式簽署功能,您必須是帳戶擁有者,或具備「發布正式版、排除特定裝置及使用 Play 應用程式簽署功能」權限,並接受《服務條款》。
核心概念
使用 Play 應用程式簽署功能時,會用到兩個不同的金鑰。瞭解兩者之間的差異和技術格式,對於避免第三方 API 發生驗證問題至關重要。
| 金鑰類型 | 持有者 | 技術詳情和用途 |
|
上傳金鑰 |
本人 (請妥善保管!) |
|
| 應用程式簽署金鑰 |
Google Play |
|
注意:為了確保最高安全性,上傳金鑰和應用程式簽署金鑰應有所不同。
Google 如何簽署應用程式:Google 使用應用程式簽署金鑰產生及簽署 APK 時,會使用 apksigner 在應用程式資訊清單中加入兩個戳記 (com.android.stamp.source 和 com.android.stamp.type)。有了這些戳記,就能安全追溯到 APK 的原始簽署者。
設定 Play 應用程式簽署功能
設定程序取決於您要發布新應用程式,還是遷移現有應用程式。
新應用程式
- 建立上傳金鑰:產生 KeyStore,用於簽署發布版應用程式套件。您可以在 Android Studio 產生,也可以透過指令列使用 Java Keytool 公用程式。
- 上傳應用程式套件:前往 Play 管理中心並準備新版本。根據預設,上傳應用程式套件時,Play 應用程式簽署功能會自動產生高強度加密的 RSA 4096 位元金鑰,用於管理及保護應用程式。超過 90% 的新應用程式都使用這個建議的預設值,設定時無需採取任何動作。
- 變更應用程式簽署金鑰 (選用):進階開發人員如要自行管理金鑰,可以變更這個預設值,做法是在版本的「應用程式完整性」部分點選「變更簽署金鑰」,或是依序前往「由 Google Play 保護」>「Play 商店發行」>「前往 Play 應用程式簽署」。屆時,您可以選擇:
- 使用與這個開發人員帳戶中的其他應用程式相同的金鑰。
- 提供應用程式簽署金鑰副本:先到 Play 管理中心下載 Google 的公開加密金鑰,再使用「Play 加密私密金鑰」(PEPK) 工具 (可直接前往 Play 管理中心下載編譯過的工具或原始碼,自行驗證或建構),安全地加密並上傳任何存放區內現有的 RSA 金鑰 (2048 位元以上)。
現有應用程式
如果您目前自行管理金鑰並上傳 APK,可以升級使用 Play 應用程式簽署功能,發揮應用程式套件和 Play 強化功能的優勢。
- 在 Play 管理中心,依序前往「由 Google Play 保護」>「Play 商店防護措施」>「前往 Play 應用程式簽署」。
- 如果尚未接受服務條款,請先接受。
- 轉移原始金鑰副本:下載 PEPK 工具,按照統一的逐步說明,加密及上傳任何存放區內現有的應用程式簽署金鑰。
向 API 供應商註冊
如果應用程式用到 API (例如 Google 地圖、OAuth 或 Facebook 登入),這些服務會使用應用程式簽署金鑰的指紋驗證應用程式。
由於 Google 會簽署最終 APK,您必須向 API 供應商註冊 Google 持有的應用程式簽署金鑰指紋,而不只是本機上傳金鑰。
- 依序前往「由 Google Play 保護」>「Play 商店發行」>「前往 Play 應用程式簽署」。
- 捲動到「應用程式簽署金鑰」部分。
- 複製所需指紋 (SHA-1 或 SHA-256)。
- 將這些指紋貼到 API 供應商的控制台 (例如 Google Cloud 控制台)。
提示:如果您使用 Android 應用程式連結,請以這些指紋更新 assetlinks.json 檔案。
管理金鑰
升級應用程式簽署金鑰
如果應用程式簽署金鑰遭盜用,或您需要提高金鑰的加密強度,可以申請每年升級一次金鑰,在搭載 Android N (API 級別 24) 以上版本的裝置進行安裝時使用。
在不同 Android 版本中的強制執行做法:
- Android T (API 級別 33) 以上版本:Android 平台會嚴格強制使用升級版金鑰。
- Android N (API 級別 24) 到 Android S (API 級別 32):Android 平台本身不會強制使用升級版金鑰,仍可辨識舊版簽署金鑰。不過,做為額外的驗證機制,Google Play 安全防護會確認應用程式更新是否已使用升級版金鑰簽署 (除非使用者關閉這項設定)。
重要事項:
- 共用資料:由於平台不會在 Android S (API 級別 32) 以下版本強制使用升級版金鑰,如果您在多個應用程式中使用相同金鑰共用資料,舊版 Android 只能辨識自訂權限共用等功能的舊版金鑰。
升級方式:
- 依序前往「由 Google Play 保護」>「Play 商店發行」>「前往 Play 應用程式簽署」。
- 在「應用程式簽署金鑰」部分下方,點選「升級金鑰」。
- 選擇升級路徑:
- 讓 Google Play 產生新的應用程式簽署金鑰 (建議選項)
- 使用與這個開發人員帳戶中的其他應用程式相同的應用程式簽署金鑰
- 提供應用程式簽署金鑰副本 (按照指示操作)
- 按一下「儲存」,向 API 供應商註冊新的金鑰指紋。
申請重設上傳金鑰
上傳金鑰遺失或疑似遭盜用時,您仍可進入應用程式。
- 在 Android Studio 建立新的上傳金鑰。
- 以 PEM 格式匯出憑證:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
(如需 Keytool 和 KeyStore 路徑的進一步說明,請參閱 Android Studio 應用程式簽署指南)。 - 產生 PEM 檔案後,請前往 Play 管理中心提交重設要求。
- 依序前往「由 Google Play 保護」>「Play 商店防護措施」>「管理 Play 應用程式簽署」。
- 在「上傳金鑰憑證」部分,按一下「要求重設上傳金鑰」。
- 輸入重設原因。
- 上傳
upload_certificate.pem檔案,然後按一下「要求」。
最佳做法和替代發行方式
- 確保安全:對所有使用者強制啟用兩步驟驗證,保護 Play 管理中心存取權。
- Play 強化功能:註冊使用 Play 應用程式簽署功能後,就能為應用程式套件啟用 Play 強化功能。如要接收更新,請在建立新版本時先進行所有必要變更,再上傳新的應用程式套件。
- 在 Google Play 以外的平台發行:如要透過其他商店發行應用程式,並共用一組簽署金鑰,有兩種方式可供選擇。您可以由 Google 產生應用程式簽署金鑰,然後下載最新版本和套件提供的通用簽署 APK,在其他平台發行應用程式 (依序前往「測試及發布」>「最新版本和套件」,選取應用程式套件,然後點按「下載」分頁標籤)。或者,您也可以產生所有應用程式商店要使用的應用程式簽署金鑰,並在設定 Play 應用程式簽署功能時,將金鑰副本傳送給 Google。
- 測試:使用「內部應用程式分享」功能,測試 Google Play 確切提供給使用者的內容,或透過應用程式套件探索工具下載裝置專用的 APK,並使用 adb install-multiple *
.apk安裝到本機。 - APK 簽署配置 v4:對於符合資格的應用程式,Play 應用程式簽署功能會自動使用 v4 簽署,以便在搭載 Android 11 以上版本的裝置上進行最佳化發行,而開發人員一方無須採取任何行動。若要進一步瞭解這些技術優勢,請參閱 APK 簽署配置 v4 說明文件。
- 自行代管的 Google Cloud 專案:如果您有非常具體的安全性需求 (例如使用原始設備製造商 (OEM) 金鑰),可以透過自行代管的 Google Cloud 專案,使用 Play Developer API 註冊 Play 應用程式簽署功能。注意:這並非標準設定,不建議使用。倘若使用自行代管的專案,您必須全權負責處理應用程式簽署作業,Google Play 無法執行災難復原等重要功能。