使用 Google Play 應用程式簽署功能

您加入 Google Play 應用程式簽署計劃後,Google 便可為您管理及保護應用程式的簽署金鑰,並使用該金鑰簽署您要發佈的 APK。假如您不幸遺失金鑰,或是金鑰遭到盜用,這項安全的應用程式簽署金鑰保存措施就能保障您的內容安全。

重要事項:如要使用我們推薦的應用程式發布格式 Android App Bundle,您必須先註冊 Google Play 應用程式簽署計畫,然後再到 Play 管理中心上傳您的應用程式套件。

如要選擇加入這項計劃,您必須是帳戶擁有者或是具有「管理正式版」全域權限的使用者,且須接受《服務條款》。您可以為應用程式註冊 Google Play 應用程式簽署計劃,但一次只能註冊一個應用程式。

運作方式

您開始使用 Google Play 應用程式簽署功能後,系統會將您的金鑰存放在基礎架構中;這套基礎架構與 Google 用來儲存自身金鑰的基礎架構完全相同。金鑰會受到 Google 金鑰管理服務的保護。如果您想要瞭解 Google 的技術基礎架構,請參閱《Google Cloud 安全性白皮書》。

Android 應用程式會使用私密金鑰進行簽署。為了確保應用程式更新值得信任,每組私密金鑰都有相關聯的公用憑證,用於讓裝置及服務驗證應用程式是否來自可信任的來源。只有在更新的簽名和已安裝應用程式的簽名相同的情況下,裝置才會接受更新。如果讓 Google 來管理您的應用程式簽署金鑰,這個驗證程序會更有安全保障。

注意:您可以自由選擇是否要使用 Google Play 應用程式簽署功能。您還是可以上傳 APK 並自行管理金鑰,不一定要使用應用程式套件;不過,在這種情況下,如果您不幸遺失 Keystore 或者 Keystore 遭駭,您將無法更新應用程式,必須改用新的套件名稱重新發佈應用程式。

金鑰、簽署標的及工具的說明
字詞 說明
應用程式簽署金鑰

Google Play 會使用這組金鑰簽署要發佈至使用者裝置的 APK。您加入 Google Play 應用程式簽署計劃後,可以選擇上傳現有的應用程式簽署金鑰,或是讓 Google 為您產生金鑰。

在您應用程式的生命週期內,應用程式簽署金鑰將無法變更。請勿將應用程式簽署金鑰告知他人;應用程式的公用憑證則可分享給其他人。

上傳金鑰

將應用程式套件或 APK 上傳至 Google Play 前,您必須用這組金鑰進行簽署。請勿將上傳金鑰告知他人;應用程式的公用憑證則可分享給其他人。基於安全的考量,建議您確保應用程式簽署金鑰和上傳金鑰為不同的金鑰。

如要產生上傳金鑰,可採用以下兩種方式:

  • 使用您的應用程式簽署金鑰:如果您選擇加入應用程式簽署計劃時,曾請 Google 為您產生應用程式簽署金鑰,那麼您用於簽署第一個版本的金鑰就是您的上傳金鑰。
  • 使用其他上傳金鑰:如果您選擇加入應用程式簽署計劃時,提供了自己的應用程式簽署金鑰,那麼您可以選擇是否要產生新的上傳金鑰,以提升安全性。如果您選擇不產生新的上傳金鑰,可繼續將應用程式簽署金鑰當做上傳金鑰,用於簽署各個版本。
憑證 (.der.pem)

憑證包含一組公開金鑰以及與金鑰擁有者相關的額外識別資訊。公用金鑰憑證可讓任何人驗證應用程式套件或 APK 簽署者的身分。您可以將公用金鑰憑證分享給任何人,因為其中並不包含您的私密金鑰。

如要向 API 供應商註冊您的金鑰,您可以前往 Play 管理中心的「應用程式簽署」頁面下載應用程式簽署金鑰和上傳金鑰的公用憑證。公用金鑰憑證可以分享給任何人,因為其中並不包含您的私密金鑰。

憑證指紋

憑證的簡短唯一表示法;API 供應商經常會在應用程式註冊使用他們的服務時,要求提供憑證指紋及套件名稱。

您可以在 Play 管理中心的「應用程式簽署」頁面找到上傳憑證和應用程式簽署憑證的 MD5、SHA-1 和 SHA-256 指紋;透過在這個頁面下載原始憑證 (.der),也可計算出其他指紋。

Java Keystore (.jks.keystore) 安全性憑證及私密金鑰的存放區。
Play Encrypt Private Key (PEPK) 工具

您可以使用這項工具從 Java Keystore 匯出私密金鑰,然後對這些金鑰進行加密,再轉移至 Google Play。

將應用程式簽署金鑰提供給 Google 使用時,請選取匯出及上傳金鑰的選項 (如有需要,另請選取公用憑證選項),然後按照操作說明下載及使用這項工具;您也可以下載、查看及使用 PEPK 工具的開放原始碼。

應用程式簽署程序

您可以在選擇加入 Google Play 應用程式簽署計劃之前或之後,隨時上傳以原始應用程式簽署金鑰簽署的 APK。

如果您即將開始使用 Android App Bundle,可以在正式版發佈階段使用現有的 APK,同時在測試群組中對應用程式套件進行測試。整個程序的運作流程如下:

  1. 簽署您的應用程式套件或 APK,然後將其上傳至 Play 管理中心。
  2. 簽署程序會因您上傳的內容而異,如下所示:
    • 應用程式套件:Google 會從您的應用程式套件中產生最佳化 APK,並以應用程式簽署金鑰進行簽署。
    • 已用上傳金鑰簽署的 APK:Google 驗證您在 APK 上的簽名後,會移除該簽名,然後使用應用程式簽署金鑰重新簽署 APK。
    • 已用應用程式簽署金鑰簽署的 APK:Google 會驗證該簽名。
  3. Google 將已簽署的 APK 發佈給使用者。

選擇加入 Google Play 應用程式簽署計劃

新應用程式

步驟 1:建立上傳金鑰

  1. 按照操作說明建立上傳金鑰。
  2. 使用上傳金鑰簽署您的新 APK。

步驟 2:備妥您要發佈的應用程式版本

  1. 按照操作說明進行準備作業與發佈版本
  2. 選取測試群組後,在「由 Google 管理及保護您的應用程式簽署金鑰」部分設定應用程式簽署功能。
  3. 如果選取 [繼續],系統產生的金鑰就會成為您用於簽署日後版本的上傳金鑰;或者您也可以選取 [進階選項],其中包含以下選項:
    • 使用和您開發人員帳戶中其他應用程式相同的金鑰 (選項 2)。
    • 上傳現有的應用程式簽署金鑰 (選項 2、3 及 4):選擇最適合的匯出及上傳選項。上傳應用程式簽署金鑰及其公用憑證後,您可以建立上傳金鑰,或是繼續將應用程式簽署金鑰當做上傳金鑰使用。

注意:您必須接受《服務條款》並選擇加入應用程式簽署計劃,才能繼續進行操作。

步驟 3:向 API 供應商註冊您的應用程式簽署金鑰

如果您的應用程式使用了任何 API,您通常需要使用憑證指紋註冊 Google 簽署您的應用程式時所使用的金鑰憑證,以便進行驗證。尋找憑證的方法如下:

  1. 登入 Play 管理中心
  2. 選取應用程式。
  3. 在左側選單中依序選取 [版本管理] > [應用程式簽署]
  4. 複製您應用程式簽署憑證的指紋 (MD5、SHA-1 及 SHA-256)。
    • 如果 API 供應商需要不同類型的指紋,您也可以下載 .der 格式的原始憑證,然後使用 API 供應商要求的轉換工具來轉換這個憑證的格式。
現有的應用程式

步驟 1:註冊加入 Google Play 應用程式簽署計劃

  1. 登入 Play 管理中心
  2. 選取應用程式。
  3. 在左側選單中依序選取 [版本管理] > [應用程式簽署]
  4. 如果您尚未接受《服務條款》,請詳閱條款內容然後選取 [接受]

步驟 2:將原始金鑰傳送給 Google 並建立上傳金鑰

  1. 找出您的原始應用程式簽署金鑰。
  2. 登入 Play 管理中心
  3. 選取應用程式。
  4. 在左側選單中依序選取 [版本管理] > [應用程式簽署]
  5. 選取最適合您發佈流程的匯出及上傳選項,然後上傳您現有的應用程式簽署金鑰。

步驟 3:建立上傳金鑰 (選用的建議步驟)

  1. 建立上傳金鑰,然後將憑證上傳至 Google Play。
    • 您也可以繼續將應用程式簽署金鑰當做上傳金鑰使用。
  2. 複製您應用程式簽署憑證的指紋 (MD5、SHA-1 及 SHA-256)。
    • 為了進行測試,您可能需要使用此憑證的指紋向 API 供應商註冊上傳金鑰的憑證,以及註冊應用程式簽署金鑰。

步驟 4:使用上傳金鑰簽署後續的應用程式更新

您為應用程式發佈更新時,必須使用上傳金鑰替更新進行簽署。

  • 如果您先前未產生新的上傳金鑰:將應用程式版本上傳至 Google Play 前,請繼續使用原始應用程式簽署金鑰替版本進行簽署。如果您不慎遺失了應用程式簽署金鑰,可以產生新的上傳金鑰,再向 Google 註冊該金鑰,以便繼續更新應用程式。
  • 如果您先前產生了新的上傳金鑰:將應用程式版本上傳至 Google Play 前,請使用您新的上傳金鑰替版本進行簽署。您將版本上傳後,Google 會檢查這些版本的上傳金鑰,以驗證您的身分。如果您不慎遺失了上傳金鑰,請與支援小組聯絡以重設金鑰

建立上傳金鑰及更新 Keystore

為了提升安全性,建議您不要使用應用程式簽署金鑰對應用程式進行簽署,而是改為使用新的上傳金鑰。

您可以在選擇加入 Google Play 應用程式簽署計劃時建立上傳金鑰,或是日後再依序前往 [版本管理] > [應用程式簽署] 建立上傳金鑰。

建立上傳金鑰的方法如下:

  1. 按照 Android 開發人員網站的說明操作,將您的金鑰存放在安全的地方。
  2. 為新的上傳金鑰匯出憑證 (PEM 格式)。接著,替換下列以底線標示的引數:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. 發佈過程中如果出現要求註冊的提示,請上傳您的憑證,並向 Google 進行註冊。

如果您使用上傳金鑰:

  • 上傳金鑰只會在 Google 註冊,目的是用來驗證應用程式作者的身分。
  • 系統會先從您上傳的 APK 中移除您的簽名,再將 APK 提供給使用者。
上傳金鑰的限制
  • 必須為 2048 位元以上的 RSA 金鑰。
  • 系統不支援 DSA 金鑰、EC 金鑰或少於 2048 位元的 RSA 金鑰。
更新 Keystore

建立上傳金鑰後,請檢查下列位置並進行更新:

  • 本機電腦
  • 鎖定的內部部署伺服器 (變動式 ACL)
  • 雲端代管系統 (變動式 ACL)
  • 專屬機密管理服務
  • (Git) 存放區

升級應用程式簽署金鑰並用於新推出的安裝檔

在某些情況下,您可以要求升級應用程式簽署金鑰。新的金鑰將用於簽署新推出的安裝檔和應用程式更新檔。如有使用者已在金鑰升級之前安裝應用程式,系統會繼續沿用舊版金鑰為他們簽署更新檔。

每個應用程式在其生命週期內,均只能升級一次應用程式簽署金鑰。萬一您有多個應用程式使用相同的簽署金鑰,且該金鑰指定於同一程序中執行,您就無法為這些應用程式升級金鑰。

要求升級應用程式簽署金鑰的常見原因如下:

  • 您需要使用經過更嚴格加密的金鑰。
  • 您的應用程式簽署金鑰遭到盜用。

注意:透過 Play 管理中心要求升級應用程式簽署金鑰,與 Android P 以上版本的 APK 簽署配置 v3 所介紹之金鑰輪替無關。Google Play 目前並不支援該類型的金鑰輪替。

提出金鑰升級要求前的重要注意事項

注意:提出金鑰升級要求前,請先瞭解完成升級後可能須進行哪些變更。

  • 如果您使用相同的應用程式簽署金鑰來簽署多個應用程式,藉此在它們之間共用資料或程式碼,您就必須將應用程式更新為可同時辨識新舊版應用程式簽署金鑰憑證。
  • 在更新應用程式之前,如果您的應用程式使用 API,請先向 API 供應商註冊新舊版應用程式簽署金鑰的憑證,之後再發布更新檔,以確保 API 能繼續運作。如需取得憑證,請前往 Play 管理中心的「應用程式簽署」頁面。
  • 如果您有許多使用者是透過點對點共用管道安裝更新檔,則他們只能安裝特定更新,這些更新與他們安裝的應用程式版本必須使用相同的簽署金鑰。如果他們因應用程式版本所用的簽署金鑰不同,導致無法更新應用程式,則可選擇解除安裝應用程式並重新安裝,以便取得更新檔。
要求升級金鑰並用於新推出的安裝檔
  1. 登入Play 管理中心
  2. 選取應用程式。
  3. 在左側選單中依序選取 [版本管理] > [應用程式簽署]
  4. 在「升級應用程式簽署金鑰並用於新推出的安裝檔」資訊卡中,選取 [要求升級金鑰]
  5. 選取任一選項:
    • 您可能需要與支援小組聯絡才能完成申請 (視您選取的選項而定)。
  6. 讓 Google 產生新的應用程式簽署金鑰 (建議做法) 或上傳一組金鑰。
    • 將應用程式簽署金鑰升級後,如果您使用的上傳金鑰和應用程式簽署金鑰是同一組金鑰,則可繼續將舊版應用程式簽署金鑰當做上傳金鑰使用,也可產生一組新的上傳金鑰。

最佳做法

  • 如果您同時也在 Google Play 以外的商店發佈應用程式,或是預計日後要這麼做,可以產生想要用於所有應用程式商店的應用程式簽署金鑰,並在選擇加入 Google Play 應用程式簽署計劃時上傳該金鑰。
  • 為了保護您的帳戶,請為所有能夠存取 Play 管理中心的帳戶啟用兩步驟驗證功能
  • 將應用程式套件發佈至測試版或是正式版測試群組後,您可以前往應用程式套件探索工具,下載含有特定裝置所有專屬 APK 的 ZIP 封存檔;這些 APK 會使用應用程式簽署金鑰進行簽署,且您可以使用 bundletool 指令列公用程式在裝置上安裝這個 ZIP 封存檔裡所含的 APK。
  • 為了提升安全性,請產生與應用程式簽署金鑰不同的新上傳金鑰。
  • 如要對已使用上傳金鑰簽署的 APK 進行測試,您必須向任何以您的應用程式簽名進行驗證的服務或 API (例如 Google Maps API 或 Facebook SDK) 註冊您的上傳金鑰。
  • 如果您使用了任何 Google API,建議您前往 Google Cloud Console 為您的應用程式註冊上傳憑證。

上傳金鑰不幸遺失或遭到盜用?

如果您不幸遺失了私密上傳金鑰,或者私密金鑰遭到盜用,請建立新的金鑰,然後請您的帳戶擁有者與支援小組聯絡以重設金鑰。請提醒您的帳戶擁有者,聯絡支援小組時務必要附上 upload_certificate.pem 檔案。

Google 的支援小組註冊新的上傳金鑰後,系統會傳送電子郵件通知給您,接著您就可以更新 Keystore,並向 API 供應商註冊您的金鑰。

重要事項:重設上傳金鑰對於 Google Play 向使用者發佈應用程式前用於重新簽署 APK 的應用程式簽署金鑰,並不會造成影響。

這對您有幫助嗎?
我們應如何改進呢?