只要加入 Play 應用程式簽署計畫,Google 就會為您管理及保護應用程式的簽署金鑰,並使用該金鑰簽署您要發布的 APK。假如您的金鑰遺失或遭到盜用,這項安全的應用程式簽署金鑰保存措施就能保障您的內容安全。
重要事項:如要使用我們推薦的應用程式發布格式 Android App Bundle,請務必先註冊 Play 應用程式簽署計畫,再到 Play 管理中心上傳您的應用程式套件。
如要選擇加入這項計畫,您必須是帳戶擁有者,或是有權發布正式版、排除特定裝置及使用 Play 應用程式簽署功能的使用者,且須接受《服務條款》。您可以為應用程式註冊 Play 應用程式簽署計畫,但一次只能註冊一個應用程式。
運作方式
您開始使用 Play 應用程式簽署功能後,系統會將您的金鑰存放在 Google 用來儲存自身金鑰的基礎架構中,因此金鑰會受到 Google 金鑰管理服務的保護。如果您想要瞭解 Google 的技術基礎架構,請參閱《Google Cloud 安全性白皮書》。
Android 應用程式會使用私密金鑰進行簽署。為了確保應用程式更新值得信任,每組私密金鑰都有相關聯的公用憑證,用於讓裝置及服務驗證應用程式是否來自可信任的來源。只有在更新的簽名和已安裝應用程式的簽名相同的情況下,裝置才會接受更新。如果讓 Google 來管理您的應用程式簽署金鑰,這個驗證程序會更有安全保障。
注意:您可以自由選擇是否使用 Play 應用程式簽署功能。您還是可以上傳 APK 並自行管理金鑰,不一定要使用應用程式套件;但在這種情況下,如果 KeyStore 遺失或遭到盜用,您將無法更新應用程式,必須改用新的套件名稱重新發布應用程式。
金鑰、簽署標的及工具的說明字詞 | 說明 |
---|---|
應用程式簽署金鑰 |
Google Play 會使用這組金鑰簽署要發布至使用者裝置的 APK。您加入 Play 應用程式簽署計畫後,可以選擇上傳現有的應用程式簽署金鑰,或是讓 Google 為您產生金鑰。 在您應用程式的生命週期內,應用程式簽署金鑰將無法變更。請勿將應用程式簽署金鑰告知他人;應用程式的公用憑證則可分享給其他人。 |
上傳金鑰 |
將應用程式套件或 APK 上傳至 Google Play 前,您必須用這組金鑰進行簽署。請勿將上傳金鑰告知他人;應用程式的公用憑證則可分享給其他人。基於安全的考量,建議您確保應用程式簽署金鑰和上傳金鑰為不同的金鑰。 如要產生上傳金鑰,可採用以下兩種方式:
|
憑證 (.der 或 .pem ) |
憑證包含一組公開金鑰以及與金鑰擁有者相關的額外識別資訊。公用金鑰憑證可讓任何人驗證應用程式套件或 APK 簽署者的身分。您可以將公用金鑰憑證分享給任何人,因為其中並不包含您的私密金鑰。 如要向 API 供應商註冊您的金鑰,您可以前往 Play 管理中心的「應用程式簽署」頁面下載應用程式簽署金鑰和上傳金鑰的公用憑證。公用金鑰憑證可以分享給任何人,因為其中並不包含您的私密金鑰。 |
憑證指紋 |
憑證的簡短唯一表示法;API 供應商經常會在應用程式註冊使用他們的服務時,要求提供憑證指紋及套件名稱。 您可以在 Play 管理中心的「應用程式簽署」頁面找到上傳憑證和應用程式簽署憑證的 MD5、SHA-1 和 SHA-256 指紋;透過在這個頁面下載原始憑證 ( |
Java Keystore (.jks 或 .keystore ) |
安全性憑證及私密金鑰的存放區。 |
Play Encrypt Private Key (PEPK) 工具 |
您可以使用這項工具從 Java Keystore 匯出私密金鑰,然後對這些金鑰進行加密,再轉移至 Google Play。 將應用程式簽署金鑰提供給 Google 使用時,請選取匯出及上傳金鑰的選項 (如有需要,另請選取公用憑證選項),然後按照操作說明下載及使用這項工具;您也可以下載、查看及使用 PEPK 工具的開放原始碼。 |
不論您是否已經選擇加入 Play 應用程式簽署計畫,都能上傳以原始應用程式簽署金鑰簽署的 APK。
如果您打算開始使用應用程式套件,可以在正式版發布階段使用現有的 APK,同時在測試群組中對應用程式套件進行測試。整個程序的運作流程如下:
- 簽署您的應用程式套件或 APK,然後將其上傳至 Play 管理中心。
- 簽署程序會因您上傳的內容而異,如下所示:
- 應用程式套件:
- Google 會從您的應用程式套件中產生最佳化 APK,並以應用程式簽署金鑰進行簽署。
- Google 會在應用程式的資訊清單中新增兩個戳記 (
com.android.stamp.source
和com.android.timestamp
),方便您追蹤 APK 的來源。
- 已用上傳金鑰簽署的 APK:Google 驗證您在 APK 上的簽名後,會移除該簽名,然後使用應用程式簽署金鑰重新簽署 APK。
- 已用應用程式簽署金鑰簽署的 APK:Google 會驗證該簽名。
- 應用程式套件:
- Google 將已簽署的 APK 發布給使用者。
選擇加入 Play 應用程式簽署計畫
新應用程式步驟 1:建立上傳金鑰
- 按照操作說明建立上傳金鑰。
- 使用上傳金鑰簽署您的新 APK。
步驟 2:備妥您要發布的應用程式版本
- 按照操作說明進行準備作業與發布版本。
- 選取測試群組後,在「由 Google 管理及保護您的應用程式簽署金鑰」部分設定應用程式簽署功能。
- 如果選取 [繼續],系統產生的金鑰就會成為您用於簽署日後版本的上傳金鑰;您也可以選取 [應用程式簽署偏好設定],其中包含以下選項:
- 使用與您開發人員帳戶中其他應用程式相同的金鑰 (選項 2)。
- 從 Java KeyStore 匯出並上傳現有金鑰 (選項 3),或在不使用 Java KeyStore 的情況下匯出並上傳現有金鑰 (選項 4)。請選擇最合適的匯出和上傳選項。上傳應用程式簽署金鑰及其公開憑證後,您可以建立上傳金鑰,或是繼續將應用程式簽署金鑰當做上傳金鑰使用。
- 選擇退出 Play 應用程式簽署計畫 (選項 5)
- 選取 [更新]。
注意:您必須接受《服務條款》並選擇加入應用程式簽署計畫,才能繼續操作。
步驟 3:向 API 供應商註冊您的應用程式簽署金鑰
如果您的應用程式使用了任何 API,您通常需要使用憑證指紋註冊 Google 簽署您的應用程式時所使用的金鑰憑證,以便進行驗證。尋找憑證的方法如下:
- 開啟 Play 管理中心。
- 在左選單中,依序選取 [發布] > [設定] > [應用程式完整性]。
- 捲動至「應用程式簽署金鑰憑證」部分,然後複製您應用程式簽署憑證的指紋 (MD5、SHA-1 及 SHA-256)。
- 如果 API 供應商需要不同類型的指紋,您也可以下載
.der
格式的原始憑證,然後使用 API 供應商要求的轉換工具來轉換這個憑證的格式。
- 如果 API 供應商需要不同類型的指紋,您也可以下載
步驟 1:註冊加入 Play 應用程式簽署計畫
- 開啟 Play 管理中心。
- 選取應用程式。
- 在左選單中,依序選取 [發布] > [設定] > [應用程式完整性]。
- 如果您尚未接受《服務條款》,請詳閱條款內容並選取 [接受]。
步驟 2:將原始金鑰傳送給 Google 並建立上傳金鑰
- 找出您的原始應用程式簽署金鑰。
- 開啟 Play 管理中心。
- 選取應用程式。
- 在左選單中,依序選取 [發布] > [設定] > [應用程式完整性]。
- 選取與您的發布流程最相配的匯出及上傳選項,然後上傳現有的應用程式簽署金鑰。
步驟 3:建立上傳金鑰 (建議選用此步驟)
- 建立上傳金鑰,然後將憑證上傳至 Google Play。
- 您也可以繼續將應用程式簽署金鑰當做上傳金鑰使用。
- 複製您應用程式簽署憑證的指紋 (MD5、SHA-1 及 SHA-256)。
- 為了進行測試,您可能需要使用此憑證的指紋向 API 供應商註冊上傳金鑰的憑證,以及註冊應用程式簽署金鑰。
步驟 4:使用上傳金鑰簽署後續的應用程式更新
您為應用程式發布更新時,必須使用上傳金鑰替更新進行簽署。
- 如果您先前未產生新的上傳金鑰:將應用程式版本上傳至 Google Play 前,請繼續使用原始應用程式簽署金鑰替版本進行簽署。如果您遺失了應用程式簽署金鑰,可以產生新的上傳金鑰,再向 Google 註冊該金鑰,以便繼續更新應用程式。
- 如果您先前產生了新的上傳金鑰:將應用程式版本上傳至 Google Play 前,請使用您新的上傳金鑰替版本進行簽署。您將版本上傳後,Google 會檢查這些版本的上傳金鑰,以驗證您的身分。如果您遺失了上傳金鑰,請與支援小組聯絡以重設金鑰。
建立上傳金鑰及更新 KeyStore
為了提升安全性,建議您使用新的上傳金鑰來簽署應用程式,不要使用應用程式簽署金鑰。
您可以在選擇加入 Play 應用程式簽署計畫時建立上傳金鑰,或是日後再前往 [設定] > [應用程式完整性] 建立上傳金鑰。
建立上傳金鑰的方法如下:
- 按照 Android 開發人員網站的說明操作,將您的金鑰存放在安全的地方。
- 為新的上傳金鑰匯出憑證 (PEM 格式)。接著,替換下列以底線標示的引數:
$ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
-
發布過程中如果出現要求註冊的提示,請上傳您的憑證,並向 Google 進行註冊。
如果您使用上傳金鑰:
- 上傳金鑰只會在 Google 註冊,目的是用來驗證應用程式作者的身分。
- 系統會先從您上傳的 APK 中移除您的簽名,再將 APK 提供給使用者。
- 必須為 2048 位元以上的 RSA 金鑰。
建立上傳金鑰後,請檢查下列位置並進行更新:
- 本機電腦
- 鎖定的內部部署伺服器 (變動式 ACL)
- 雲端代管系統 (變動式 ACL)
- 專屬機密管理服務
- (Git) 存放區
升級應用程式簽署金鑰並用於新推出的安裝檔
在某些情況下,您可以要求升級應用程式簽署金鑰。新的金鑰將用於簽署新推出的安裝檔和應用程式更新檔。如有使用者已在金鑰升級之前安裝應用程式,系統會繼續沿用舊版金鑰為他們簽署更新檔。
每個應用程式在其生命週期內,均只能升級一次應用程式簽署金鑰。萬一您有多個應用程式使用相同的簽署金鑰,且該金鑰指定於同一程序中執行,您就無法為這些應用程式升級金鑰。
要求升級應用程式簽署金鑰的常見原因如下:
- 您需要使用經過更嚴格加密的金鑰。
- 您的應用程式簽署金鑰遭到盜用。
注意:透過 Play 管理中心要求升級應用程式簽署金鑰的做法,與 Android P 以上版本的 APK 簽署配置 v3 採行的金鑰輪替方式無關。Google Play 目前並不支援該類型的金鑰輪替。
提出金鑰升級要求前的重要注意事項注意:提出金鑰升級要求前,請先瞭解完成升級後可能須進行哪些變更。
- 如果您使用相同的應用程式簽署金鑰來簽署多個應用程式,藉此在它們之間共用資料或程式碼,您就必須將應用程式更新為可同時辨識新舊版應用程式簽署金鑰憑證。
- 如果您的應用程式使用 API,請先向 API 供應商註冊新舊版應用程式簽署金鑰的憑證,之後再發布更新檔,以確保 API 能繼續運作。如需取得憑證,請前往 Play 管理中心的「應用程式簽署」頁面。
- 如果您有許多使用者是透過點對點共用管道安裝更新檔,則他們只能安裝特定更新,這些更新與他們安裝的應用程式版本必須使用相同的簽署金鑰。如果他們因應用程式版本所用的簽署金鑰不同,導致無法更新應用程式,則可選擇解除安裝應用程式並重新安裝,以便取得更新檔。
- 登入 Play 管理中心。
- 選取應用程式。
- 在左選單中,依序選取 [發布] > [設定] > [應用程式完整性]。
- 在「升級應用程式簽署金鑰並用於新推出的安裝檔」資訊卡中,選取 [要求升級金鑰]。
- 選取任一選項:
- 您可能需要與支援小組聯絡才能完成申請 (視您選取的選項而定)。
- 讓 Google 產生新的應用程式簽署金鑰 (建議做法) 或上傳一組金鑰。
- 將應用程式簽署金鑰升級後,如果您使用的上傳金鑰和應用程式簽署金鑰是同一組金鑰,則可繼續將舊版應用程式簽署金鑰當做上傳金鑰使用,也可產生一組新的上傳金鑰。
最佳做法
- 如果您同時也在 Google Play 以外的地方發布應用程式 (或是未來有這方面的計畫) 並想使用同一組簽署金鑰,有兩種方式可供選擇:
- 讓 Google 產生金鑰 (建議做法),然後從應用程式套件探索工具下載經過簽署的通用 APK,發布在 Google Play 以外的地方。您也可以透過 Google Play Developer API 下載經過簽署的 APK。
- 您還能自行產生要用於各個應用程式商店的應用程式簽署金鑰,並在選擇加入 Play 應用程式簽署計畫時將金鑰副本傳送給 Google。
- 為了保護您的帳戶,請為所有能夠存取 Play 管理中心的帳戶啟用兩步驟驗證功能。
- 將應用程式套件發布至測試版或是正式版群組後,您可以前往應用程式套件探索工具,下載含有特定裝置所有專屬 APK 的 ZIP 封存檔;這些 APK 均已使用應用程式簽署金鑰完成簽署,您可以使用
adb install-multiple *.apk
指令在裝置上安裝這個 ZIP 封存檔中的 APK。 - 為了提升安全性,請新產生一個不同於應用程式簽署金鑰的上傳金鑰。
- 如要對已使用上傳金鑰簽署的 APK 進行測試,您必須向任何以您的應用程式簽名進行驗證的服務或 API (例如 Google Maps API 或 Facebook SDK) 註冊您的上傳金鑰。
- 如果您使用 Google API,建議您前往 Google Cloud Console 為您的應用程式註冊上傳憑證。
上傳金鑰遺失或遭到盜用?
如果您遺失了私密上傳金鑰,或者私密金鑰遭到盜用,請先建立新的金鑰,然後請您的帳戶擁有者與支援團隊聯絡以重設金鑰。請提醒您的帳戶擁有者,聯絡支援小組時務必要附上 upload_certificate.pem
檔案。
Google 的支援小組註冊新的上傳金鑰後,系統會傳送電子郵件通知給您,接著您就可以更新 Keystore,並向 API 供應商註冊您的金鑰。
重要事項:重設上傳金鑰對於 Google Play 向使用者發布應用程式前用於重新簽署 APK 的應用程式簽署金鑰,並不會造成影響。