[英]Verifying Android Code Signing
我們正在計划對CI設置進行一些更改,其中包括對用於簽名Android應用程序的密鑰庫進行一些更改(更改密碼,密鑰別名之類的東西)。
顯然,任何可能導致我們用錯誤的密鑰簽名的錯誤,如果將其推入商店,都將是一場災難。
所以我的問題是:
我將以相反的順序執行此操作:
- Google Play開發者控制台是否已采取適當措施來檢測現有應用程序的密鑰更改?
是的,它確實。 實際上,一旦上傳了簽名的APK,您就只能提交使用該證書簽名的更新的APK。 否則,Google Play會吐出類似以下內容:
上傳失敗
您已將使用其他證書簽名的APK上傳到以前的APK。 您必須使用相同的證書。
您現有的APK已使用帶有指紋的證書進行了簽名:[SHA1:89:2F:11:FE:CE:D6:CC:DF:65:E7:76:3E:DD:A7:96: 4F:84:DD:BA:33],並且用於簽署上傳的APK的證書具有指紋:[SHA1:20:26:F4:C1:DF:0F:2B:D9:46: 03:FF:AB:07:B1:28:7B:9C:75:44:CC]
- 是否可以驗證兩個應用程序已使用同一密鑰簽名?
是。 您可以為此使用jarsigner
或keytool
。 我更喜歡后者的輸出:
keytool -list -printcert -jarfile MyApp.apk
在其他一些細節中,將為您提供證書的指紋(默認情況下為MD5,SHA1和SHA256),看起來像這樣:
Certificate fingerprints:
MD5: 12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF
SHA1: 12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:44
SHA256: 12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78:12:34:56:78:90:AB:CD:EF:12:34:56:78
Signature algorithm name: SHA1withRSA
Version: 3
您可以對多個APK執行此操作並比較結果。 另外,您也可以將APK中的指紋直接與密鑰庫中的證書進行比較:
keytool -list -keystore MyApp.keystore
輸入密鑰庫的密碼后,您將看到類似以下內容的內容:
Certificate fingerprint (SHA1): 12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:44
這應該與APK中的SHA1指紋完全匹配。
在上面鏈接的“問答” 的答案之一中,可以找到有關如何使用jarsigner
進行類似操作的示例。
- 驗證用於簽名Android應用程序的密鑰的最佳方法是什么?
不確定是否可以客觀地回答這個問題,但是上述兩種方法都可以解決問題。 理想情況下,您需要設置一個腳本來自動執行此檢查(作為構建過程的一部分?),並在出現意外情況時盡早失敗。 最糟糕的情況是,您最終會得到一個APK,該APK上簽名的證書並不是您要簽署的。 如果此APK是對現有應用的更新,則Google Play會阻止您提交它。 如果它是全新的應用程序,則不會,並且必須使用相同(錯誤的)證書對它進行任何更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.