[英]How actually is verified signature on APK update?
我有一個 Android 應用程序。 我在 Google Play 上以 APK 的形式發布了這個應用。 該應用程序由我擁有的簽名密鑰簽名:
現在:我的目標是基於密鑰 A 創建一個新證書(我們將其命名為 C2),但摘要算法從 SHA1 更改為 SHA256。 我想通過使用 A+C2 簽名來發布應用程序的新版本。 我什至可以在 C2 上設置與 C1 相同的所有字段和有效時間。 只會更改摘要。
問題是 - 使用 A+C2 發布和簽名的應用程序更新是否會出現問題?
AFAIK 驗證應用程序的未更改源,足以驗證用於簽名的公鑰。 在我的例子中——C2 具有與 C1 相同的公鑰。
那么 APK 更新上的簽名驗證實際上是如何進行的呢? 檢查以下哪項:
一些消息來源說相同的證書很重要:
有些人似乎說也許只有私鑰需要相同:
Android 平台在已安裝的 APK 和待安裝的 APK 之間逐字節比較證書。
因此,您不能從同一個密鑰創建新證書並期望更新是無縫的。
您可以選擇使用密鑰輪換,這已在 Android 9 中引入: https ://developer.android.com/about/versions/pie/android-9.0#apk-key-rotation
感謝您的所有評論/回答。 希望能在Android源碼中找到准確的答案,可以肯定。 但這是不可能的。
所以最后我做了一個測試——我創建了 C2 並用 C2 簽署了同一個應用程序。 不幸的是,當我嘗試安裝使用 C2 簽名的新版本時,Android 拒絕說該應用程序來自其他開發人員。
所以現在我們肯定知道了:
所以現在我將重點放在其他人之前提到的 APK 密鑰輪換https://stackoverflow.com/a/74903402/1961303
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.